Android流式布局:FlowLayout

jopen 10年前發布 | 95K 次閱讀 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());
  }
});

項目主頁:http://www.baiduhome.net/lib/view/home/1442133776443

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!