一些自己写的自定义View
存一下,经常要用到
存一下,经常要用到
一个列表,显示两列,我会使用 GridLayoutManager
实现
GridLayoutManager layoutManager = new GridLayoutManager(mContext, 2);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
// 第一行显示一个,之后显示两个
if (position == 0) {
return 2;
}
return 1;
}
});
rv_data.setLayoutManager(layoutManager);
但是这个列表突然要显示成瀑布流了,所以要改成 StaggeredGridLayoutManager
,但是 StaggeredGridLayoutManager
没有 setSpanSizeLookUp
方法,解决方法如下
Activity:
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, RecyclerView.VERTICAL);
rv_data.setLayoutManager(layoutManager);
Adapter:
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
// 第一行占满
StaggeredGridLayoutManager.LayoutParams layoutManager = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams();
layoutManager.setFullSpan(position == 0);
}
之前做倒计时,1秒1跳,做法是用 Handler 每隔一秒发送一次。但是手机息屏后,过了差不多5分钟,就有5秒的误差。
网络上搜索解决方法,说改用 Timer,试了下发现也一样不准,息屏之后也会变慢。
自己想到方法,保存开始计时的时间戳,然后 Handler 里判断当前时间和开始时间的差值,这个准。
就觉得很奇怪,网上搜了下,说要用 onKeyDown
来实现
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// TODO
return true;
}
return super.onKeyDown(keyCode, event);
}
换了其它的手机,发现都会走 onKeyDown
,那看来以后要用这个方法来实现拦截返回的功能了,不然兼容性会有问题
就是一个TextView,其中一部分字体颜色不同,实现起来很简单
spannableString.setSpan(new ForegroundColorSpan(), , , );
但是在小米手机上,没有设置字体颜色的部分直接不显示了,找了下原因,是因为没有设置默认的字体颜色
android:textColor="#333333"
布局里添加个字体颜色就行了