LabelLayout只是用于标签布局(layout),搭配CheckBox使用,标签样式可以随意更换,完全没有束缚,小而精悍。(支持API 9 及以上)
- label_horizontalSpacing 水平方向上标签之间的距离
- label_verticalSpacing 竖直方向上标签之间的距离
- label_checkboxLayout 传入CheckBox布局(也就是标签的样式)
- label_enableDivider 是否需要在标签行间加分割线,默认为false
- label_dividerHeight 行间分割线的高度
- label_dividerColor 行间分割线的颜色
compile 'com.lcodecorex:labellayout:1.0.1'
- 定义标签数据Bean实现ILabel接口
public interface ILabel {
//warning! Ids should be unique!!!
public String getId();
public String getName();
}
注意getId()放回的id值必须是独特的,不可重复。
- layout布局
<com.lcodecore.LabelLayout
android:id="@+id/label_me"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
app:label_horizontalPadding="16dp"
app:label_horizontalSpacing="16dp"
app:label_verticalPadding="16dp"
app:label_verticalSpacing="32dp"
app:label_enableDivider="true" />
- 设置标签,使用setLabels()方法
labelLayout.setLabels(List<ILabel> labels);
- 添加标签选择监听器
label_me.setOnCheckChangedListener(new LabelLayout.OnCheckListener() {
@Override
public void onCheckChanged(ILabel label,boolean isChecked) {}
@Override
public void onBeyondMaxCheckCount() {
}
});
-
如果是需要选择标签,可以调用setMaxCheckCount(int)方法,选中的标签超过这个数checkListener的onBeyondMaxCheckCount()方法会被回调。
-
其它方法
- getCheckedLabelsCount 获取当前被选中的标签数量
- getCheckedLabelIds() 获取被选中的标签的id列表
- getCheckedIdsAsJson() 获取json序列化之后的id的json串
--- 主布局
<com.lcodecore.LabelLayout
android:id="@+id/label_all"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
app:label_horizontalPadding="16dp"
app:label_horizontalSpacing="16dp"
app:label_verticalPadding="16dp"
app:label_verticalSpacing="32dp"
app:label_checkboxLayout="@layout/checkbox_gray"
app:label_enableDivider="true" />
--- checkbox_gray.xml
<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="32dp"
android:layout_margin="10dp"
android:background="@drawable/label_selector_gray"
android:button="@null"
android:paddingBottom="4dp"
android:paddingLeft="13dp"
android:paddingRight="13dp"
android:paddingTop="4dp"
android:textColor="#999"
android:textSize="16sp" />
--- 图一中用的CheckBox样式
<?xml version="1.0" encoding="utf-8"?><!--推荐列表用到的标签显示checkbox-->
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="32dp"
android:background="@null"
android:button="@null"
android:paddingRight="4dp"
android:textColor="@color/colorPrimary"
android:textSize="12sp" />
ps Contact me:lcodecore@163.com