android获取表头 颜色,Android RecyclerView 表格效果,header添加,遇到的问题等
最总效果:device-2017-03-13-135723.png代码分析, 其中遇到的问题和坑:1:外围的黑色边框,shape完成( bg.xml )上面是4面的边框,如果想实现一个3面的边框呢?可以使用layer-list的图片叠加功能实现,(bg_header.xml)android:width="1dp"android:color="@color/black" />andro...
最总效果:
device-2017-03-13-135723.png
代码分析, 其中遇到的问题和坑:
1: 外围的黑色边框,shape完成 ( bg.xml )
上面是4面的边框,如果想实现一个3面的边框呢?
可以使用layer-list的图片叠加功能实现,(bg_header.xml)
android:width="1dp"
android:color="@color/black" />
android:left="2dp"
android:right="2dp"
android:top="2dp">
2: 列表中的下划线实现
a: 实现类DividerItemDecoration.class, 见项目代码
RecyclerView.ItemDecoration,该类为抽象类,官方目前并没有提供默认的实现类。而DividerItemDecoration.class该类很好的实现了RecyclerView添加分割线。
b: recyclerview 添加item的下划线,和方向
mRecyclerView.addItemDecoration(new DividerItemDecoration(
getActivity(), DividerItemDecoration.VERTICAL_LIST));
在该demo的表格中下划线的方向是垂直方向,不要弄错,已经犯过了!
c: AppTheme中进行下划线的颜色修改
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
//下划线的颜色修改
@drawable/item_bottom_line
3: 添加header
思路:adapter提供的getItemViewType()方法,来区分不同的view,加载不同的布局实现。
a: getItemViewType()中根据位置position==0来判断是header布局
@Override
public int getItemViewType(int position) {
if(position == 0){
return TYPE_HEADER;
}
if (position == getItemCount()-1){
//最后一个,应该加载Footer
return TYPE_FOOTER;
}
return TYPE_NORMAL;
}
b: 通过判断headerView和类型是不是正确,布局header到recyclerView中
@Override
public NormalViewholder onCreateViewHolder(ViewGroup parent, int viewType) {
if(mHeaderView != null && viewType == TYPE_HEADER){
//需要传入parent,不然item不能居中
// return new NormalViewholder(mHeaderView);
return new NormalViewholder(LayoutInflater.from(mContext).inflate(R.layout.item_first_header, parent, false));
}
//需要传入parent,不然item不能居中
View viewNormal = LayoutInflater.from(mContext).inflate(R.layout.item_recycler_grid, parent, false);
return new NormalViewholder(viewNormal);
}
c: 设置header
private void setAdaperHeader(){
View view = LayoutInflater.from(mActivity).inflate(R.layout.item_first_header,null);
mAdapter.setHeader(view);
}
遇到的坑:
坑1:布局中的文字不能居中
解决方法:布局文件,需要进过layoutinflater加入到parent才行!!!!!
if(mHeaderView != null && viewType == TYPE_HEADER){
//需要传入parent,不然item不能居中
// return new NormalViewholder(mHeaderView);
return new NormalViewholder(LayoutInflater.from(mContext).inflate(R.layout.item_first_header, parent, false));
}
坑2:给header设置毕竟颜色时,黑色的边框给覆盖了
device-2017-03-13-135550.png
解决方法:使用layer-list实现一个背景,这个背景是将left,top,right3面的内边距减掉2dp的,这样和原来的布局重叠一下,黑色的边框就出来了!
android:left="2dp"
android:right="2dp"
android:top="2dp">
更多推荐
所有评论(0)