Android FlowLayout

About this Project

An android auto-adaptive layout library

Core Ability

Auto wrap line when item reach parent end

Attributes

  • itemMarginX, padding between each column
  • itemMarginY, padding between each row
  • item margins will be ignored, you can use padding or wrapper view instead

Steps for Integration

1. Dependency
kotlin 复制代码
api("io.github.hellogoogle2000:android-flowlayout:1.0.3")
2. Apply in Xml Layout
xml 复制代码
<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">

    <com.android.library.flowlayout.FlowLayout
        android:id="@+id/flowLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="20dp"
        app:itemMarginX="10dp"
        app:itemMarginY="5dp">

        <TextView
            android:layout_width="50dp"
            android:layout_height="30dp"
            android:background="#22FF0000"
            android:gravity="center"
            android:text="1"
            android:textSize="20dp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="80dp"
            android:layout_height="30dp"
            android:background="#22FF0000"
            android:gravity="center"
            android:text="2"
            android:textSize="20dp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="30dp"
            android:background="#22FF0000"
            android:gravity="center"
            android:text="3"
            android:textSize="20dp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="190dp"
            android:layout_height="30dp"
            android:background="#22FF0000"
            android:gravity="center"
            android:text="4"
            android:textSize="20dp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="40dp"
            android:layout_height="30dp"
            android:background="#22FF0000"
            android:gravity="center"
            android:text="5"
            android:textSize="20dp"
            android:textStyle="bold" />
    </com.android.library.flowlayout.FlowLayout>
</LinearLayout>
3. Convert View from Data

you are also enabled to create view from a data set dynamically

kotlin 复制代码
val simulated = mutableListOf<String>().apply {
    for (i in 0 until 30)
        add(UUID.randomUUID().toString())
}
binding.flowLayout.applyViewAdapter({ Button(this) }, simulated) { view, data ->
    view.text = data
    view.setPadding(15, 15, 15, 15)
    val lp = view.layoutParams
    lp.width = ViewGroup.LayoutParams.WRAP_CONTENT
    lp.height = ViewGroup.LayoutParams.WRAP_CONTENT
}

Preview



相关推荐
2501_916008891 小时前
手机抓包app大全:无需root的安卓抓包软件列表
android·ios·智能手机·小程序·uni-app·iphone·webview
百锦再1 小时前
第18章 高级特征
android·java·开发语言·后端·python·rust·django
gcygeeker2 小时前
安卓 4.4.2 电视盒子 ADB 设置应用开机自启动
android·adb·电视盒子
小驰行动派2 小时前
安卓上的极简番茄钟 | 开源
android·开源
jzlhll1232 小时前
android抽屉DrawerLayout在2025的沉浸式兼容
android
基哥的奋斗历程2 小时前
Kotlin_Flow_完整使用指南
android·开发语言·kotlin
j***82703 小时前
【玩转全栈】----Django连接MySQL
android·mysql·django
雨白4 小时前
深入理解 Android DocumentFile:性能陷阱与最佳实践
android
inputA4 小时前
【LwIP源码学习8】netbuf源码分析
android·c语言·笔记·嵌入式硬件·学习
CHINAHEAO4 小时前
FlyEnv+Bagisto安装遇到的一些问题
android