自定义搜索页tag,非常好用
来源:互联网 发布:js做一个弹窗 编辑:程序博客网 时间:2024/06/06 08:36
效果
编写布局
<com.donkingliang.labels.LabelsView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/labels" android:layout_width="match_parent" android:layout_height="wrap_content" app:labelBackground="@drawable/label_bg" //标签的背景 app:labelTextColor="@drawable/label_text_color" //标签的字体颜色 可以是一个颜色值 app:labelTextSize="14sp" //标签的字体大小 app:labelTextPaddingBottom="5dp" //标签的上下左右边距 app:labelTextPaddingLeft="10dp" app:labelTextPaddingRight="10dp" app:labelTextPaddingTop="5dp" app:lineMargin="10dp" //行与行的距离 app:wordMargin="10dp" //标签与标签的距离 app:selectType="SINGLE" //标签的选择类型 有单选、多选、不可选三种类型 app:maxSelect="5" /> //标签的最大选择数量,只有多选的时候才有用,0为不限数量
这里有两个地方需要说明一下: 1)标签的正常样式和选中样式是通过drawable来实现的。比如下面两个drawable。
<!-- 标签的背景 label_bg --><selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 标签选中时的背景 --> <item android:state_selected="true"> <shape> <stroke android:width="2dp" android:color="#fb435b" /> <corners android:radius="8dp" /> <solid android:color="@android:color/white" /> </shape> </item> <!-- 标签的正常背景 --> <item> <shape> <stroke android:width="2dp" android:color="#656565" /> <corners android:radius="8dp" /> <solid android:color="@android:color/white" /> </shape> </item></selector>
<!-- 标签的文字颜色 label_text_color --><selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 标签选中时的文字颜色 --> <item android:color="#fb435b" android:state_selected="true" /> <!-- 标签的正常文字颜色 --> <item android:color="#2d2b2b" /></selector>
TextView的textColor属性除了可以设置一个颜色值以外,也可以通过资源来设置的,这一点很多同学都不知道。 2)标签的选择类型有三种:
NONE :标签不可选中,也不响应选中事件监听,这是默认值。
SINGLE:单选。
MULTI:多选,可以通过设置maxSelect限定选择的最大数量,0为不限数量。maxSelect只有在多选的时候才有效。
3、设置标签:
labelsView = (LabelsView) findViewById(labels);ArrayList<String> label = new ArrayList<>();label.add("Android");label.add("IOS");label.add("前端");label.add("后台");label.add("微信开发");label.add("游戏开发");label.add("Java");label.add("JavaScript");label.add("C++");label.add("PHP");label.add("Python");label.add("Swift");labelsView.setLabels(label); //直接设置一个字符串数组就可以了。
4、设置事件监听:(如果需要的话)
//标签的点击监听labelsView.setOnLabelClickListener(new LabelsView.OnLabelClickListener() { @Override public void onLabelClick(View label, String labelText, int position) { //label是被点击的标签,labelText是标签的文字,position是标签的位置。 }});//标签的选中监听labelsView.setOnLabelSelectChangeListener(new LabelsView.OnLabelSelectChangeListener() { @Override public void onLabelSelectChange(View label, String labelText, boolean isSelect, int position) { //label是被点击的标签,labelText是标签的文字,isSelect是是否选中,position是标签的位置。 }});
5、常用方法
//设置选中标签。//positions是个可变类型,表示被选中的标签的位置。//比喻labelsView.setSelects(1,2,5);选中第1,3,5个标签。如果是单选的话,只有第一个参数有效。public void setSelects(int... positions);//获取选中的标签。返回的是一个Integer的数组,表示被选中的标签的下标。如果没有选中,数组的size等于0。public ArrayList<Integer> getSelectLabels();//取消所有选中的标签。public void clearAllSelect();//设置标签的选择类型,有NONE、SINGLE和MULTI三种类型。public void setSelectType(SelectType selectType);//设置最大的选择数量,只有selectType等于MULTI是有效。public void setMaxSelect(int maxSelect);//设置标签背景public void setLabelBackgroundResource(int resId);//设置标签的文字颜色public void setLabelTextColor(int color);public void setLabelTextColor(ColorStateList color);//设置标签的文字大小(单位是px)public void setLabelTextSize(float size);//设置标签内边距public void setLabelTextPadding(int left, int top, int right, int bottom);//设置行间隔public void setLineMargin(int margin);//设置标签的间隔public void setWordMargin(int margin);
所以的set方法都有对应的get方法,这里就不说了。
阅读全文
1 0
- 自定义搜索页tag,非常好用
- tag 搜索
- 一个非常好用的自定义圆形控件
- 自定义 非常好用水平进度条工具类
- Android非常好用的自定义dialog
- 自定义Tag
- 自定义标签tag
- JSP自定义Tag
- django tag 自定义
- JSP自定义标签(Tag)
- 自定义标签(tag)
- struts2 自定义tag标签
- jsp自定义tag标签
- Jsp 自定义tag标签
- 自定义标签Tag
- JSP自定义tag
- 开发自定义tag标签
- tag文件-自定义标签
- jQuery的deferred对象详解
- Intellij IDEA设置代码注释模板
- iOS开发 基于系统原生的语音识别助手
- 手动释放linux内存cache和脚本定时释放
- 加密中的“Salt”
- 自定义搜索页tag,非常好用
- oracle查询提示未找到from关键字
- Nuget 安装指定版本package
- 添加地图上守卫和弓箭手的方法
- Spring(一)Spring简介、源码包,SpringMVC环境构建、运行原理、常用注解标签
- ubuntu 手动释放缓存 (清理内存cache)
- 24种设计模式
- HTML转图片
- 操作系统的作业调度