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

Android開發流式佈局FlowLayout

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

1、Dome目錄結構如下圖:

說白了你就按照我這目錄結構將標紅的檔案匯入專案對應資料夾,那麼你就能看到流失佈局效果了;

效果圖如下:

現在說說怎麼改成大家想要的效果:佈局檔案引用自定義控制元件程式碼如下

 <view.FlowTagLayout
                android:id="@+id/color_flow_layout"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

專案需求肯定不一需要修改選中及為選中狀態修改:normal_text_color.xmlround_rectangle_bg.xml即可

文字修改的三種狀態:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#0185d0"/>//按下
    <item android:state_selected="true" android:color="#0185d0"/>//選中
    <item android:color="#666666"/>//未選中
</selector>

文字背景的三種狀態:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">                                     //按下
        <shape android:shape="rectangle">
            <solid android:color="#ffffff" />
            <corners android:radius="3dp" />
            <stroke android:width="1dp" android:color="#0185d0" />
        </shape>
    </item>
    <item android:state_selected="true">                                      //選中
        <shape android:shape="rectangle">
            <solid android:color="#ffffff" />
            <corners android:radius="3dp" />
            <stroke android:width="1dp" android:color="#0185d0" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">                                  //未選中
            <solid android:color="#ffffff" />
            <corners android:radius="3dp" />
            <stroke android:width="1dp" android:color="#0185d0" />
        </shape>
    </item>
</selector>

下面說一下單選實現單碼段:

        mSizeTagAdapter = new TagAdapter<String>(this);
        mSizeFlowTagLayout.setTagCheckedMode(FlowTagLayout.FLOW_TAG_CHECKED_SINGLE);//單選
        mSizeFlowTagLayout.setAdapter(mSizeTagAdapter);
        mSizeFlowTagLayout.setOnTagSelectListener(new OnTagSelectListener() {
            @Override
            public void onItemSelect(FlowTagLayout parent, List<Integer> selectedList) {
                if (selectedList != null && selectedList.size() > 0) {
                    StringBuilder sb = new StringBuilder();
                    for (int i : selectedList) {
                        ms = i;
                        sb.append(parent.getAdapter().getItem(i));
                        sb.append(":");
                    }
                    Toast.makeText(getApplicationContext(), "移動研發:" + sb.toString(), Toast.LENGTH_SHORT).show();
                } else {
                    mSizeFlowTagLayout.getChildAt(ms).setSelected(true);
                }
            }
        });

ADD資料:    private void initColorData() {
        List<String> dataSource = new ArrayList<String>();
        dataSource.add("紅色");
        dataSource.add("黑色");
        dataSource.add("花邊色");
        dataSource.add("深藍色");
        dataSource.add("白色");
        dataSource.add("玫瑰紅色");
        dataSource.add("紫黑紫蘭色");
        dataSource.add("葡萄紅色");
        dataSource.add("屎黃色");
        dataSource.add("綠色");
        dataSource.add("彩虹色");
        dataSource.add("牡丹色");
        mColorTagAdapter.onlyAddAll(dataSource);//加入一個數組即可
    }
資料載入可能不只一個屬性,沒關係我們可以通過點選事件的位置ms來獲取選中的屬性。

最後簡單說下我改造後實現的規格選擇:思路就是把FlowLayout作為ListView的item。然後在回撥接收選中屬性;太困了洗洗睡,有需要的可以私聊!

貼一下我的專案的效果圖

專案dome原始碼:http://download.csdn.net/detail/yanxuxu123/9705678

相關推薦

Android開發佈局FlowLayout

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

Android開發佈局關聯資料庫

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

解決: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 實現關鍵字標籤

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

Android佈局FlowLayout

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

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

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

自定義控制元件之-佈局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開發之RecyclerView實現佈局

RecyclerView是什麼? RecycleView的出現, 替代了ListView, 沒了OnitemClickListener,; LayoutManager負責計算佈局; Adapter 負責適配,還增加了ViewHolder;RecycleView

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

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

Android開發之玩轉FlexboxLayout佈局(可用於普通控制元件實現佈局,也可結合RecycleView實現佈局

在這之前,我曾認真的研究過鴻洋大神的Android 自定義ViewGroup 實戰篇 -> 實現FlowLayout,按照大神的思路寫出了一個流式佈局,所有的東西都是難者不會會者不難,當自己能自定義流式佈局的時候就會覺得這東西原來很簡單了。如果各位小夥伴也看過那篇

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">

佈局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,主要負責