1. 程式人生 > >Android流式佈局FlowLayout

Android流式佈局FlowLayout

現在商城類的APP幾乎都要用到流式佈局來實現選擇屬性功能,在我的demo中是通過FlowLayout工具類實現流式佈局

使用起來非常簡單,十幾行程式碼就可以實現;

在我們的專案中大部分都是單選效果,為了防止用到多選,demo中也實現了多選;

FlowLayout大家不用研究怎麼實現的,只要會使用就好;

就好比谷歌提供的ListView條目點選事件一樣,只要會用就好,沒必要研究個所以然;大家在用的時候直接從demo中複製到專案中即可;

大家可以將FlowLayout理解為一個線性佈局;將準備好的一個個子view新增到FlowLayout中即可;

首先看下佈局檔案:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <!--
    app:horizontal_spacing="8dp"  每列之間的距離
    app:vertical_spacing="8dp"    每行之間的距離
    -->
    <www.fl.com.flowlayouttext.view.FlowLayout
        android:id="@+id/flowlayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:paddingBottom="14dp"
        android:paddingLeft="21dp"
        android:paddingRight="14dp"
        app:horizontal_spacing="8dp"
        app:vertical_spacing="8dp"/>
    
</LinearLayout>
佈局檔案非常簡單,沒什麼好說的,下面看下程式碼實現:

大致分為三步:

 //第一步:初始化FlowLayout
          flowLayout= (FlowLayout) findViewById(R.id.flowlayout);
        //第二步:移除FlowLayout中的所有子佈局
          flowLayout.removeAllViews();
        //第三步:迴圈建立子View,新增到FlowLayout中
          for (int x=0;x<names.length;x++){
            //3.1初始化子view
            CheckBox checkBox= (CheckBox) View.inflate(context,R.layout.item_flowlayout,null);
            checkBox.setText(names[x]);

            final int finalX = x;
            //3.2設定子view的點選事件
            checkBox.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ToastUtil.show(context, names[finalX]);
                    //遍歷FlowLayout中的所有view,如果是當前選中的view,設定為選中狀態,其他設定為未選中狀態
                    refreshCheckBox(names[finalX]);
                }
            });
            //3.3將子view新增到FlowLayout中
            flowLayout.addView(checkBox);
        }
從程式碼中可以看到,子view使用的是CheckBox,背景和文字顏色都是使用的狀態選擇器,大家可以根據自己專案中的需求隨意更改:

item_flowlayout.xml

<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:button="@null"
    android:textSize="15sp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:background="@drawable/item_bg_select"
    android:textColor="@drawable/text_color"
    android:paddingTop="3dp"
    android:paddingBottom="3dp">
</CheckBox>
單選到此結束,大家可能感覺多選比單選要難,其實多選比單選還要簡單,以上程式碼只需去除子view點選事件中refreshCheckBox()方法即可實現多選;

相關推薦

Android 佈局FlowLayout 實現關鍵字標籤

1.介紹 流式佈局的應用還是很廣泛的,比如搜尋熱詞、關鍵詞標籤等,GitHub上已經有很多這樣的佈局了,但是還是想著自己實現一下,最近一直在學自定義控制元件,也鞏固一下所學的知識。 本文實現的效果如下圖所示: 2.思路 繼承自RelativeL

Android佈局FlowLayout

現在商城類的APP幾乎都要用到流式佈局來實現選擇屬性功能,在我的demo中是通過FlowLayout工具類實現流式佈局 使用起來非常簡單,十幾行程式碼就可以實現; 在我們的專案中大部分都是單選效果,為了防止用到多選,demo中也實現了多選; FlowLayout大家不用研

解決:Android中常見的熱門標籤的佈局flowlayout不能wrap_content

最近在專案中藥使用流式佈局,但是在網上找的都不能滿足要求,這篇部落格內容只支援match_parent,我改後的程式碼可以支援wrap_content,原文也僅僅是少加一行高度而已。。新部落格希望大家多多評論。。原文連結 一:概述: 1.流式佈局的特點以

Android中的封裝佈局FlowLayout

鴻洋的GitHub:https://github.com/hongyangAndroid/FlowLayout 第一步:加依賴 implementation 'com.hyman:flowlayout-lib:1.1.2' 第二步:建立一個Adapter繼承TagAdapter pu

Android開發佈局FlowLayout

先說說我的需求吧,我需要做商品規格選擇、類似淘寶京東選擇產品加入購物車。沒辦法只有選擇流式佈局了。最後在改造張鴻洋前輩的Flowlayout實現了該功能。我說說怎麼快速使用流式佈局吧,自定義控制元件說明看這張鴻洋的部落格:http://blog.csdn.net/lmj62

android佈局、待辦事項應用、貝塞爾曲線、MVP+Rxjava+Retrofit、藝術圖片應用等原始碼

Android精選原始碼 android模仿淘寶首頁效果原始碼 一款藝術圖片應用,採用T-MVVM打造 Android MVP + RxJava + Retrofit專案 android流式佈局實現熱門標籤效果 android仿淘寶客戶端商品詳

使用Adapter設計模式打造一個佈局FlowLayout

流式佈局可以說是在各種軟體中的出場率都很高的一個佈局方式,被廣泛使用,像一些關鍵字搜尋,標籤等等的場景,更是隨處可見,今天我們就來手把手打造一個FlowLayout。 FlowLayout由於是以一個容器的身份存在的,所以其需要繼承的是ViewGroup而不是

一個非常好用的Android佈局

效果圖鎮樓 首先我們先新增依賴 compile 'com.zhy:flowlayout-lib:1.0.3' 然後將以下標籤和佈局新增到專案中。 主佈局layouy->activity_flow_layout.xml <?xml v

自定義控制元件之-佈局FlowLayout

前言 其實對於流式佈局控制元件,很多人並不陌生,專案中或多或少都會用到的.但是有多少人會寫一個流式佈局的控制元件這就不知道了,所以博主這裡對流式佈局進行一個講解,並且封裝一個比較完善的控制元件 效果圖 看到的這個整個就是一個流式佈局,裡面是

佈局 FlowLayout 的簡單使用

先給大家看效果圖:歷史記錄本地儲存到share裡面,在onStart裡面獲取呼叫資料,點選搜尋的時候新增進share。匯入依賴:compile 'com.nex3z:flow-layout:1.2.2'https://github.com/nex3z/FlowLayoutUs

[Android]FlowLayout:佈局的應用

一、應用 流式佈局即控制元件根據ViewGroup的寬,自動的往右新增,如果當前行剩餘空間不足,則自動新增到下一行。經常應用於搜尋歷史以及熱搜等介面。 二、實現 1.FlowLayout.java 只要是重寫onMeasure和onLayout兩個函式。 onMeasu

Android 實現FlowLayout佈局(類似熱門標籤)

今天跟大家分享一下FlowLayout,最近專案中有遇到熱門標籤這個樣的佈局(文章末尾可下載原始碼),如下圖: 一,建立FlowLayout並繼承ViewGroup FlowLayout 類主要實現onMeasure,onLayout和generateL

100行Android程式碼自定義一個佈局FlowLayout

首先來看一下 手淘HD - 商品詳情 - 選擇商品屬性 頁面的UI 商品有很多尺碼,而且展現每個尺碼所需要的View的大小也不同(主要是寬度),所以在從伺服器端拉到資料之前,展現所有尺碼所需要的行數和每一行的個數都無法確定,因此不能直接使用GridView

Android 自定義View-----佈局(粗糙實現)

//首先檢視一下佈局介面吧 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app

Android : 自定義View之佈局

寫了一個很簡單的佈局 這是周圍圓框的drawable <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android">

Android開發佈局關聯資料庫

效果如下 自定義View組合控制元件header_View <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res

佈局FlowLayout使用

package com.a520it.mygoogleplay.ui; import android.content.Context; import android.util.AttributeSet; import android.view.View; import androi

Android 自定義佈局(快速實現)

首先先寫一個自定義的類繼承viewgroup,程式碼如下 package com.demo.com.jd_zhang.ui.customview; import android.content.Context; import android.util.AttributeS

Android-超簡單的佈局

流式佈局,一般在商城類的專案中用到會非常多比如 淘寶中,購物選擇商品列表的時候,這個就是流式佈局    創作起來也很簡單, 只要你計算出寬度,和高度,如果超出螢幕寬度,則換行擺放即可 然後我就嘗試著寫了一下,果然還是可以的 效果圖 核心方法主要是

Android 實現一個簡易橫向佈局

SimpleFlowLayout:一個簡易的橫向流式佈局,只實現核心功能,使用者可自行擴充套件   Demo圖片如下所示: SimpleFlowLayout直接繼承自ViewGroup,主要負責