登录

去注册 忘记密码?

登录

注册

去登录

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

注册

解锁回答区域

  • 扫码关注公众号
  • 发送“我爱安卓

若你登陆,将永久解锁;
若未登录,仅本机解锁。

解锁回答区域

获取注册验证码

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

流式布局FlowLayout

yangsanning   2020-04-20 23:28   收藏

FlowLayout2

效果预览

主要文件

名字摘要
FlowLayout2流布局
BaseFlowLayout2Adapteradapter(核心)
BaseFlowLayout2ViewHolderViewHolder
BaseFlowLayout2Type多类型布局

1. 基本用法

1.1 布局中添加

<ysn.com.view.flowlayout2.FlowLayout2 
    android:layout_width="match_parent"
    android:layout_height="match_parent"  
    ysn:fl2_column_space="10dp"
    ysn:fl2_row_space="10dp" />

1.2 简单示例

    FlowLayout2Adapter flowLayout2Adapter = new FlowLayout2Adapter();
    flowLayout2.setAdapter(flowLayout2Adapter);
    flowLayout2Adapter.setNewData(getData());
    
    private class FlowLayout2Adapter extends BaseFlowLayout2Adapter<User, BaseFlowLayout2ViewHolder> {

        protected FlowLayout2Adapter() {
            super(R.layout.item_flow_layout_2);
        }

        @Override
        public void convert(BaseFlowLayout2ViewHolder holder, int position, User item) {
            holder.setText(R.id.flow_layout_2_item_text, item.getName());
        }
    }

1.2.1 点击事件配置(可选)

    flowLayout2Adapter.setOnItemClickListener(onItemClickListener)
    flowLayout2Adapter.setOnItemLongClickListener(onItemLongClickListener)
    holder.setOnClickListener(onClickListener)
    holder.setOnLongClickListener(onLongClickListener)

1.2.2 空布局的配置(可选)

    // 设置空布局
    flowLayout2Adapter.setEmptyLayoutRes(R.layout.layout_empty);
    
    // 可通过getEmptyView获取空布局, 进行相关操作
    flowLayout2Adapter.getEmptyView().setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            flowLayout2Adapter.setNewData(getData());
        }
    });

1.2.2 多布局的配置(可选)

    // 注意: 一定要先设置FlowLayout2Type, 方可进行相关操作
    setFlowLayout2Type(new BaseFlowLayout2Type<User>() {
        @Override
        protected int getItemType(User user) {
            return user.getId() % 2 == 1 ? 0 : 1;
        }
    });

    // 可通过获取FlowLayout2Type进行类型绑定
    getFlowLayout2Type().addItemType(0, R.layout.item_multi_type_flow_layout_2_1);

    // 可直接进行类型绑定
    addItemType(1, R.layout.item_multi_type_flow_layout_2_2);

2. 配置属性([Attributes

](https://github.com/yangsanning/FlowLayout2/blob/master/flowlayout2/src/main/res/values/attrs.xml))

FlowLayout2

nameformatdescription
fl2_column_spacedimension列的间距
fl2_row_spacedimension行的间距
fl2_is_last_avgboolean最后一行是否均分

3.添加方法

3.1 添加仓库

在项目的 build.gradle 文件中配置仓库地址。

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

3.2 添加项目依赖

在需要添加依赖的 Module 下添加以下信息,使用方式和普通的远程仓库一样。

implementation 'com.github.yangsanning:FlowLayout2:1.0.0'

项目地址:https://github.com/yangsanning/FlowLayout2