FlexboxLayout流布局的使用(分割线的妙用)

1、添加依赖
dependencies {
    compile 'com.google.android:flexbox:0.3.0'
}
2、准备下分割线文件(这步很重要,初学者都是通过添加View来实现分割线的)

在drawable文件下创建shape_flexbox_divider.xml文件,具体内容如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size
        android:width="10dp"
        android:height="10dp" />
</shape>
3、在布局文件中使用FlexboxLayout布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <!--
    分割线的使用
    app:dividerDrawable="@drawable/shape_flexbox_divider"
    app:showDivider="middle"
    app:flexWrap="wrap"
            app:justifyContent="flex_start"
    -->
    <com.google.android.flexbox.FlexboxLayout
        android:id="@+id/flexboxLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="@dimen/px20dp"
        app:dividerDrawable="@drawable/shape_flexbox_divider"
        app:flexWrap="wrap"
        app:justifyContent="flex_start"
        app:showDivider="middle">


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:background="@drawable/shape_search_key"
            android:gravity="center"
            android:orientation="vertical"
            android:paddingLeft="16dp"
            android:paddingRight="16dp"
            android:singleLine="true"
            android:text="白色"
            android:textColor="#343434"
            android:textSize="16dp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:background="@drawable/shape_search_key"
            android:gravity="center"
            android:orientation="vertical"
            android:paddingLeft="16dp"
            android:paddingRight="16dp"
            android:singleLine="true"
            android:text="flexboxlayout"
            android:textColor="#343434"
            android:textSize="16dp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:background="@drawable/shape_search_key"
            android:gravity="center"
            android:orientation="vertical"
            android:paddingLeft="16dp"
            android:paddingRight="16dp"
            android:singleLine="true"
            android:text="黑色"
            android:textColor="#343434"
            android:textSize="16dp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:background="@drawable/shape_search_key"
            android:gravity="center"
            android:orientation="vertical"
            android:paddingLeft="16dp"
            android:paddingRight="16dp"
            android:singleLine="true"
            android:text="Android"
            android:textColor="#343434"
            android:textSize="16dp" />
    </com.google.android.flexbox.FlexboxLayout>
</LinearLayout>

效果图

C68C30D2-8A03-4C03-A5FE-135B7819E8E3.png
4、也可以在代码中动态添加标签

获取标签控件

/**
     * 根据名称获取item
     *
     * @param tagName
     */
private View getTagView(final String tagName) {
        View view = layoutInflater.inflate(R.layout.item_flexbox, null);//item_flexbox自己定义
        TextView textView = ((TextView) view.findViewById(R.id.tv_name));
        textView.setText(tagName);
        return view;
    }

添加到flexboxLayout

flexboxLayout.addView(getTagView(key));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容