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



相关推荐
野生的码农2 小时前
放过自己,降低预期,及时行乐
android·ai编程
huwuhang3 小时前
索尼PS3游戏合集【中文游戏】8.12T 1430个游戏+PS3模拟器
android·游戏·智能手机·游戏机·电视
Grackers5 小时前
Android Perfetto 系列 5:Android App 基于 Choreographer 的渲染流程
android
踩着两条虫5 小时前
AI驱动的Vue3应用开发平台深入探究(十):物料系统之内置组件库
android·前端·vue.js·人工智能·低代码·系统架构·rxjava
sam.li5 小时前
JADX MCP 原理与使用部署
android·逆向·jadx
冬奇Lab5 小时前
Android 15音频子系统(五):AudioPolicyService策略管理深度解析
android·音视频开发·源码阅读
亚历克斯神6 小时前
Flutter for OpenHarmony: Flutter 三方库 mutex 为鸿蒙异步任务提供可靠的临界资源互斥锁(并发安全基石)
android·数据库·安全·flutter·华为·harmonyos
dalancon8 小时前
SurfaceControl 的事务提交给 SurfaceFlinger,以及 SurfaceFlinger 如何将这些数据设置到对应 Layer 的完整流程
android
dalancon8 小时前
SurfaceFlinger Layer 到 HWC 通信流程详解
android
cccccc语言我来了8 小时前
Linux(9)操作系统
android·java·linux