我是靠谱客的博主 奋斗小蝴蝶,最近开发中收集的这篇文章主要介绍Android之实现流式标签,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

公司的项目需要使用流式布局显示选项,在网上看了不少的类似的东西,找了好久发现了一个比较好用库。

首先导入依赖:

implementation 'com.nex3z:flow-layout:1.0.0'

在Github上开源:查看地址

布局代码:

<com.nex3z.flowlayout.FlowLayout
    android:id="@+id/flow"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:flChildSpacing="7dp"
    app:flRowSpacing="8dp" />

使用方法:

// 获取控件
FlowLayout flowLayout = (FlowLayout) findViewById(R.id.flow);

// 循环添加标签
for (int i = 0; i < strList.size(); i++) {
    TextView textView = buildLabel(strList.get(i));
    flowLayout.addView(textView);
}

flowlayout就是一个布局,像这样添加textView进去,就完成初始化了。

属性说明(中文版):

// 默认为true,flase只显示一行
flowLayout.setFlow(false);

// 这个三个属性都是间距,横纵的距离
flowLayout.setChildSpacing(8);
flowLayout.setRowSpacing(8);
flowLayout.setChildSpacingForLastRow(8);

//最大行数,如果设置为2那么显示出的行数只有两行。
flowLayout.setMaxRows(2);

//布局中这个属性默认是false,为true排列方向从右到左
app:flRtl="true"

 完成效果代码如下: 

for (int i = 0; i < strList.size(); i++) {
    TextView textView = buildLabel(strList.get(i));
    flowLayout.addView(textView);
}
private TextView buildLabel(final String text) {
    TextView textView = new TextView(this);
    textView.setText(text);
    textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
    textView.setPadding((int) dpToPx(16), (int) dpToPx(8), (int) dpToPx(16), (int) dpToPx(8));
    textView.setBackgroundResource(R.drawable.bg_gray);
    textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            et.setText(text);
        }
    });
    return textView;
}

private float dpToPx(float dp) {
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics());
}

 效果还是挺好用的,颜色自己设置。特性就是可以自动根据标签文字的长度自动换行。

最后

以上就是奋斗小蝴蝶为你收集整理的Android之实现流式标签的全部内容,希望文章能够帮你解决Android之实现流式标签所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部