Android 流式布局FlowLayout

FlowLayout

現(xiàn)在項目中為了美觀路鹰,設(shè)計師們都比較喜歡流式布局(FlowLayout)炎功,秉著不重復(fù)造輪子的原則,在網(wǎng)上搜索了一堆座泳,后來還是根據(jù)名氣選擇了鴻陽的??惠昔。
廢話不多說,下面是我做的Demo示例圖片:

屏幕快照 2019-08-27 下午4.38.12.png

1挑势、使用鴻陽大神的代碼首先要引入依賴:

 implementation 'com.hyman:flowlayout-lib:1.1.2'

2镇防、剩下就是在代碼中使用啦
1??、布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:zhy="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.activity.FlowLayoutActivity">

<com.zhy.view.flowlayout.TagFlowLayout
    android:id="@+id/tab_flowlayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="20dp"
    zhy:max_select="-1"></com.zhy.view.flowlayout.TagFlowLayout>

<Button
    android:id="@+id/btn_count"
    android:layout_width="match_parent"
    android:layout_height="50dp" />
</LinearLayout>

2??潮饱、項目中使用来氧,寫了兩個方法:

  /**
 * 設(shè)置選擇事件
 */
private void setFlowItemListener() {
    //選擇監(jiān)聽
    tabFlowlayout.setOnSelectListener(new TagFlowLayout.OnSelectListener() {
        @Override
        public void onSelected(Set<Integer> selectPosSet) {

            Toast.makeText(FlowLayoutActivity.this, "chose" + selectPosSet.toString(), Toast.LENGTH_SHORT).show();
        }
    });

    //標(biāo)簽點擊監(jiān)聽
    tabFlowlayout.setOnTagClickListener(new TagFlowLayout.OnTagClickListener() {
        @Override
        public boolean onTagClick(View view, int position, FlowLayout parent) {
            Toast.makeText(FlowLayoutActivity.this, "標(biāo)簽" + tags.get(position), Toast.LENGTH_SHORT).show();
            return true;
        }
    });
}

  /**
 * 給流式布局設(shè)置值
 */
private void setFlowData() {

    tabFlowlayout.setAdapter(new TagAdapter<String>(tags) {
        @Override
        public View getView(FlowLayout parent, int position, String o) {

            LayoutInflater inflater = LayoutInflater.from(getApplication());
            TextView textView = (TextView) inflater.inflate(R.layout.tv_layout, tabFlowlayout, false);
            textView.setText(o);
            textView.setBackground(getDrawable(R.drawable.textview_nomal_shape));
            return textView;
        }
        //當(dāng)選中的時候
        @Override
        public void onSelected(int position, View view) {
            super.onSelected(position, view);
            TextView textView = (TextView) view;
            textView.setBackground(getDrawable(R.drawable.textview_shape));
            textView.setTextColor(Color.parseColor("#FFFFFF"));
        }

        //當(dāng)沒選中的時候
        @Override
        public void unSelected(int position, View view) {
            super.unSelected(position, view);
            TextView textView = (TextView) view;
            textView.setBackground(getDrawable(R.drawable.textview_nomal_shape));
            textView.setTextColor(Color.parseColor("#000000"));
        }
    });
}

3、使用的時候我遇到了一個問題香拉,就是當(dāng)我給TextView設(shè)置選擇器的時候啦扬,發(fā)現(xiàn)只有邊框顏色變化,背景沒有變化凫碌。造成這種問題的原因是我Item布局父布局是LinearLayout 里面嵌套一個TextView扑毡,改成Item布局直接是TextView這個問題就解決啦,(分析的原因是盛险,這樣寫的目的是瞄摊,我們代碼設(shè)置選中監(jiān)聽的時候,方法中有一個view如果這個view不是TextView我們就不能設(shè)置字體顏色啦苦掘,這樣就局限啦换帜,有可能分析的不對,只是給自己找了個理由而已??)可以在第二個方法中隨便設(shè)置背景色啦鸟蜡,而且還能給條目字體設(shè)置顏色膜赃。

4、有現(xiàn)成的API可以直接獲取我們選中條目的索引值揉忘,代碼如下,查看了數(shù)據(jù)端铛,數(shù)據(jù)準(zhǔn)確泣矛。

List<Integer> list = new ArrayList<>();

@OnClick(R.id.btn_count)
public void onViewClicked() {
    list.clear();

    Set<Integer> selectedList = tabFlowlayout.getSelectedList();
    Iterator<Integer> iterator = selectedList.iterator();
    while (iterator.hasNext()) {
        Integer next = iterator.next();
        list.add(next);
    }
    Toast.makeText(this, "被選中的條目數(shù)量是:" + list.size(), Toast.LENGTH_SHORT).show();

}

5、以上就是使用流程禾蚕,自學(xué)完畢您朽。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市换淆,隨后出現(xiàn)的幾起案子哗总,更是在濱河造成了極大的恐慌,老刑警劉巖倍试,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讯屈,死亡現(xiàn)場離奇詭異,居然都是意外死亡县习,警方通過查閱死者的電腦和手機涮母,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門谆趾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叛本,你說我怎么就攤上這事沪蓬。” “怎么了来候?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵跷叉,是天一觀的道長。 經(jīng)常有香客問我营搅,道長性芬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任剧防,我火速辦了婚禮植锉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘峭拘。我一直安慰自己俊庇,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布鸡挠。 她就那樣靜靜地躺著辉饱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拣展。 梳的紋絲不亂的頭發(fā)上彭沼,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音备埃,去河邊找鬼姓惑。 笑死,一個胖子當(dāng)著我的面吹牛按脚,可吹牛的內(nèi)容都是我干的于毙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辅搬,長吁一口氣:“原來是場噩夢啊……” “哼唯沮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起堪遂,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤介蛉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后溶褪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體币旧,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年竿滨,在試婚紗的時候發(fā)現(xiàn)自己被綠了佳恬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捏境。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖毁葱,靈堂內(nèi)的尸體忽然破棺而出垫言,到底是詐尸還是另有隱情,我是刑警寧澤倾剿,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布筷频,位于F島的核電站,受9級特大地震影響前痘,放射性物質(zhì)發(fā)生泄漏凛捏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一芹缔、第九天 我趴在偏房一處隱蔽的房頂上張望坯癣。 院中可真熱鬧,春花似錦最欠、人聲如沸示罗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚜点。三九已至,卻和暖如春拌阴,著一層夾襖步出監(jiān)牢的瞬間绍绘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工迟赃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留陪拘,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓捺氢,卻偏偏與公主長得像藻丢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子摄乒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容