Android流式布局:FlowLayout
FlowLayout
Android流式布局,支持單選、多選等,適合用于產品標簽等。
特色
- 以setAdapter形式注入數據
- 直接設置selector為background即可完成標簽選則的切換,類似CheckBox
- 支持控制選擇的Tag數量,比如:單選、多選
- 支持setOnTagClickListener,當點擊某個Tag回調
- 支持setOnSelectListener,當選擇某個Tag后回調
- 支持adapter.notifyDataChanged
- Activity重建(或者旋轉)后,選擇的狀態自動保存
效果圖
用法
聲明
布局文件中聲明:
<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的數量multi_suppout是否開啟多選的支持,默認為true
設置數據
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());
}
}); 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!

