一、demo功能
在电商项目中,商品属性选择是必不可少的,而且属性的数目和长度不是固定的,就有了 “标签选择”。以下我就借用了开源的AutoFlowLayout控件,根据商品属性选择要求写了这个demo,和大家分享
二、代码介绍
1.功能
AutoFlowLayout具有很多功能,比如自动换行,支持单选/多选,支持行居中/靠左显示,支持单行/多行显示,支持子View点击/长按事件,支持添加/删除子View,等等,如果感兴趣,自己可以去研究下,
下面附下AutoFlowLayout开源项目demo的地址:
http://www.jcodecraeer.com/a/opensource/2017/0806/8346.html
此demo功能比较齐全,因我的项目里一些功能不需要,所以我就把商品属相所需要的标签单选,默认选中第一个标签,选择颜色改变功能进行摘取,完善;
写了此demo,代码简单,不需要依赖,方便用在项目中,希望对大家有用;
2.使用
布局文件:
<com.ss.goodsattributeselect.AutoFlowLayout
android:id="@+id/afl_cotent"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
主activity
//动态添加每个Tag
for (int i = 0; i< mData.length; i ++ ){
View item = LayoutInflater.from(this).inflate(R.layout.attribute_item, null);
TextView tvAttrTag = (TextView) item.findViewById(R.id.tv_attr_tag);
tvAttrTag.setText(mData[i]);
mFlowLayout.addView(item);
}
//默认第一个为选中状态
mFlowLayout.getChildAt(0).setSelected(true);
attribute = mData[0];
//item点击事件
mFlowLayout.setOnItemClickListener(new AutoFlowLayout.OnItemClickListener() {
@Override
public void onItemClick(int position, View view) {
//当选中别的item时,将默认第一个选中去掉
if (position != 0){
mFlowLayout.getChildAt(0).setSelected(false);
}
//当连续点击相同的item时,防止取消选中
if (attribute.equals(mData[position])){
mFlowLayout.getChildAt(position).setSelected(true);
}
attribute = mData[position];
}
});
3.效果图
默认选中第一个
可自由选择商品属性
下面附上demo下载地址:
http://download.csdn.net/download/shanshan_1117/10130106