使用FlexboxLayoutManager來(lái)實現流式布局 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 技術分享 >

使用FlexboxLayoutManager來(lái)實現流式布局

發表時(shí)間:2020-10-19

發布人(rén):融晨科技

浏覽次數:196

在(zài)項目中經常會用到(dào)流式布局,以(yǐ)前一直是(shì)使用鴻洋開源的(de)哪個(gè)版本,然後在(zài)其上(shàng)進行修改,之(zhī)前看到(dào)了(le/liǎo)google開源了(le/liǎo)一個(gè)FlexboxLayoutManager的(de)控件,也(yě)可以(yǐ)實現流式布局,但是(shì)一直也(yě)沒有細看。今天偶然又見到(dào)一篇相關的(de)文章,這(zhè)裏簡單做一個(gè)記錄,以(yǐ)備以(yǐ)後使用。
[官方地(dì / de)址](https://github.com/google/flexbox-layout)
這(zhè)裏注意,它默認給出(chū)的(de)版本是(shì)androidX使用的(de),你看一下它下面的(de)說(shuō)明,非X使用的(de)版本在(zài)裏面有說(shuō)明。
好不(bù)多說(shuō),直接上(shàng)代碼,這(zhè)裏的(de)流式布局,采用的(de)是(shì)RecyclerView + FlexboxLayoutManager來(lái)實現的(de)。
我這(zhè)裏寫到(dào)了(le/liǎo)fragment裏,主要(yào / yāo)是(shì)當時(shí)爲(wéi / wèi)了(le/liǎo)試一下新寫的(de)懶惰加載功能。
fragment_one.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_Flexbox"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>

</LinearLayout>

FragmentOne.java

public class FragmentOne extends BaseFragment {

    private RecyclerView rv_Flexbox;
    private List<String> list_data;
    private FlexBoxAdapter fAdapter;
    //private FlexboxLayoutManager flexboxLayoutManager;

    private Context mContext;


    public FragmentOne(Context mContext) {

        this.mContext = mContext;
    }

    @Override
    protected void initView(View rootView) {
        rv_Flexbox = (RecyclerView)rootView.findViewById(R.id.rv_Flexbox);
        FlexboxLayoutManager flexboxLayoutManager = new FlexboxLayoutManager(mContext);
        //flexDirection 屬性決定主軸的(de)方向(即項目的(de)排列方向)。類似 LinearLayout 的(de) vertical 和(hé / huò) horizontal。
        flexboxLayoutManager.setFlexDirection(FlexDirection.ROW);//主軸爲(wéi / wèi)水平方向,起點在(zài)左端。
        //flexWrap 默認情況下 Flex 跟 LinearLayout 一樣,都是(shì)不(bù)帶換行排列的(de),但是(shì)flexWrap屬性可以(yǐ)支持換行排列。
        flexboxLayoutManager.setFlexWrap(FlexWrap.WRAP);//按正常方向換行
        //justifyContent 屬性定義了(le/liǎo)項目在(zài)主軸上(shàng)的(de)對齊方式。
        flexboxLayoutManager.setJustifyContent(JustifyContent.FLEX_START);//交叉軸的(de)起點對齊。
        rv_Flexbox.setLayoutManager(flexboxLayoutManager);

        list_data = new ArrayList<>();
        fAdapter = new FlexBoxAdapter(getActivity(),list_data);
        rv_Flexbox.setAdapter(fAdapter);

        fAdapter.setOnItemClickLitener(new FlexBoxAdapter.OnItemClickLitener() {
            @Override
            public void rel="stylesheet">
 

相關案例查看更多