效果图
简单使用
- gradle 集成
api 'com.enowr.android:Widgets:0.0.8'
- 分割线:设置左上右下的Drawable,以及大小
new ItemDecorationDivider(binding.recycler) {
@Override
public DividerInfo onCreateDividerLeft(int position) {
DividerInfo info = new DividerInfo();
info.setColor(Color.RED);
return info;
}
@Override
public DividerInfo onCreateDividerTop(int position) {
DividerInfo info = new DividerInfo();
info.setColor(Color.BLUE);
return info;
}
@Override
public DividerInfo onCreateDividerRight(int position) {
DividerInfo info = new DividerInfo();
info.setColor(Color.RED);
return info;
}
@Override
public DividerInfo onCreateDividerBottom(int position) {
DividerInfo info = new DividerInfo();
info.setColor(Color.GREEN);
return info;
}
@Override
public void onBindDividerLeft(@NonNull DividerInfo info, int position) {
info.setDistance(position + 2);
}
@Override
public void onBindDividerTop(@NonNull DividerInfo info, int position) {
info.setDistance(position + 10);
}
@Override
public void onBindDividerRight(@NonNull DividerInfo info, int position) {
}
@Override
public void onBindDividerBottom(@NonNull DividerInfo info, int position) {
info.setDistance(10);
}
};
- 分组:设置header、footer的View 以及偏移量
new ItemDecorationSection(binding.recycler, true) {
@Override
public SectionInfo onCreateHeaderSectionInfo(int position) {
SectionInfo info = null;
if (position % 20 == 0) {
info = new SectionInfo();
info.setView(LayoutInflater.from(getApplication()).inflate(R.layout.recycler_layout_item_decoration, binding.recycler, false));
RecyclerLayoutItemDecorationBinding binding = DataBindingUtil.bind(info.getView());
binding.executePendingBindings();
binding.text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UtilsToast.show("点击了分组" + v.getTag(v.getId()));
}
});
}
return info;
}
@Override
public SectionInfo onCreateFooterSectionInfo(int position) {
SectionInfo info = null;
if (position % 20 == 19) {
info = new SectionInfo();
info.setView(LayoutInflater.from(getApplication()).inflate(R.layout.recycler_layout_item_decoration_footer, binding.recycler, false));
RecyclerLayoutItemDecorationFooterBinding binding = DataBindingUtil.bind(info.getView());
binding.executePendingBindings();
binding.text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UtilsToast.show("点击了Footer" + v.getTag(v.getId()));
}
});
}
return info;
}
@Override
public void onBindHeaderSectionInfo(@NonNull SectionInfo info, int position) {
info.setTranslationY(-position - 10);
RecyclerLayoutItemDecorationBinding binding = DataBindingUtil.getBinding(info.getView());
binding.text.setText("分组" + position / 20);
binding.text.setTag(binding.text.getId(), position / 20);
}
@Override
public void onBindFooterSectionInfo(@NonNull SectionInfo info, int position) {
info.setTranslationY(10);
RecyclerLayoutItemDecorationFooterBinding binding = DataBindingUtil.getBinding(info.getView());
binding.text.setText("Footer View" + position / 20);
binding.text.setTag(binding.text.getId(), position / 20);
}
};