https://github.com/hanhailong/FlowTag
FlowTagLayout
Android流式布局,支持点击、单选、多选等,适合用于产品标签等,用法采用Adapter模式,和ListView、GridView用法一样!
2016/6/26号新添加初始化标签功能,使用非常简单,只要你的Adapter实现OnInitSelectedPosition即可,对于点击模式是不存在初始化标签一说的;对于单选模式来说,如果有多个初始化选择,则默认去第一个;对于多选来说正常使用!!!
##特色
- 填充数据和ListView、GridView用法一样使用Adapter,更新数据直接通过adapter.notifyDataChanged来更新
- 支持点击、单选、多选事件
- 三种模式:FLOW_TAG_CHECKED_NONE、FLOW_TAG_CHECKED_SINGLE、FLOW_TAG_CHECKED_MULTI
- 支持OnTagClickListener单点事件
- 支持OnTagSelectListener单选、多选事件
#效果图
#版本更新
##2016/6/26
- 添加初始化选中标签
- 单选模式下初始化标签只有第一个起作用
- 多选模式下只要设置初始化选中就可以
- 添加初始化选中标签代码示例
Adapter实现OnInitSelectedPosition接口
实现接口中isSelectedPosition方法就可以,选中返回true,不选中默认返回false
public class TagAdapter<T> extends BaseAdapter implements OnInitSelectedPosition { @Override public boolean isSelectedPosition(int position) { if (position % 2 == 0) { return true; } return false; } }
#TODO
- 复用View...
#联系我
如果大家在使用过程中遇到任何问题都可以联系我,谢谢!!!最好是发邮件,我每天都会抽时间看一下我的邮箱:hanhailong.cool@163.com
https://github.com/hongyangAndroid/FlowLayout
FlowLayout
Android流式布局,支持单选、多选等,适合用于产品标签等。
##特色
- 以setAdapter形式注入数据
- 直接设置selector为background即可完成标签选则的切换,类似CheckBox
- 支持控制选择的Tag数量,比如:单选、多选
- 支持setOnTagClickListener,当点击某个Tag回调
- 支持setOnSelectListener,当选择某个Tag后回调
- 支持adapter.notifyDataChanged
- Activity重建(或者旋转)后,选择的状态自动保存
##效果图
用法
dependencies {
compile 'com.zhy:flowlayout-lib:1.0.3'
}
声明
布局文件中声明:
<com.zhy.view.flowlayout.TagFlowLayout
android:id="@+id/id_flowlayout"
zhy:max_select="-1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="20dp">
</com.zhy.view.flowlayout.TagFlowLayout>
支持属性:
max_select
:-1为不限制选择数量,>=1的数字为控制选择tag的数量 auto_select_effect
是否开启默认的选中效果,即为selector中设置的效果,默认为true;如果设置为false,则无选中效果,需要自己在回调中处理。
###设置数据
mFlowLayout.setAdapter(new TagAdapter<String>(mVals)
{
@Override
public View getView(FlowLayout parent, int position, String s)
{
TextView tv = (TextView) mInflater.inflate(R.layout.tv,
mFlowLayout, false);
tv.setText(s);
return tv;
}
});
getView中回调,类似ListView等用法。
对于选中状态
你还在复杂的写代码设置选中后标签的显示效果么,翔哥说No!
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/tag_select_textcolor"
android:drawable="@drawable/checked_bg"
android:state_checked="true"></item>
<item android:drawable="@drawable/normal_bg"></item>
</selector>
设置个background,上面一个状态为android:state_checked,另一个为正常。写写布局文件我都嫌慢,怎么能写一堆代码控制效果,设置改个效果,岂不是没时间dota了。
###事件
mFlowLayout.setOnTagClickListener(new TagFlowLayout.OnTagClickListener()
{
@Override
public boolean onTagClick(View view, int position, FlowLayout parent)
{
Toast.makeText(getActivity(), mVals[position], Toast.LENGTH_SHORT).show();
return true;
}
});
点击标签时的回调。
mFlowLayout.setOnSelectListener(new TagFlowLayout.OnSelectListener()
{
@Override
public void onSelected(Set<Integer> selectPosSet)
{
getActivity().setTitle("choose:" + selectPosSet.toString());
}
});
选择多个标签时的回调。
##预先设置Item选中
//预先设置选中
mAdapter.setSelectedList(1,3,5,7,8,9);
//获得所有选中的pos集合
flowLayout.getSelectedList();