基于LinearLayout的小标签(TextView)自动换行(修改)

        设计最初是因为公司项目需要多处显示多个小标签,并且需要多行展示,最开始使用的GridLayout,但是这个网格布局局限性太高,标签是动态的,内容也不定,用GridLayout就会有多行占用的各种显示问题,所以后来换成了LinearLayout动态添加,写完以后就有了写一个继承LinearLayout的自动换行布局的想法。

        GridLayout的显示效果:

        即使根据长度自动设置占据行数,还是会有显示上的问题,更何况如果碰到符号类,实际长度又比判断内容长度时设想的短不少,显示出来就更丑了。

        优化之后的显示效果:

         优化之后,动态添加子View的时候会读子View的长度,判断长度大于一行就自动换行,基本达到了想要的效果,但是代码比较繁琐,多处使用的时候会比较麻烦,所以就写成了一个View,这样调用后传数据进去就可以自动生成了。

        (修改)修改原因是觉得自己写的函数太多,没办法融入到View的体系里面,刷新、内边距、外边距等操作都需要手动操作,用起来极其繁琐,所以修改了原来的实现方式,重载父类的onMeasure和onLayout来实现父View的动态高度和子View的排版,实现结果和原先的差不多,修改后由于子View在外面用addView自己实现,所以不再局限于TextView。

        接下来上代码:

        AutoItemLayout:

package com.mine.mylibrary.viewutil;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;

import androidx.annotation.Nullable;

public class AutoItemLayout extends LinearLayout {

    public AutoItemLayout(Context context) {
        this(context, null);
    }

    public AutoItemLayout(Context con
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值