TextView 动态获取行数和高度

TextView 动态获取行数

开发中发现,如果直接TextView.setText()多行文本内容后立即调用TextView.getLineCount(),总是显示行数为1, 其实TextView还未完成measure,要想正确的获取TextView的行数有一种方法:

1、View.post(Runnable r)方法:(Runnable会被添加到一个顺序执行的UI事件队列,等执行到里面的代码时,View已经完成了measure和layout等一系列 初始化工作,所以可以正确获取到View的高度等信息)

textView.post(new Runnable() {
    @Override
    public void run() {
        LogUtils.e("行数:"+textView.getLineCount());
    }
});
textView.setText("这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。
这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。这是测试多行文本的内容。
这是测试多行文本的内容。这是测试多行文本的内容。");

TextView 动态获取高度

第一种场景的1处理方法:

//发票需求中对抬头多行显示后,右滑显示删除时要设置红色删除背景的高度
//处理步骤1.获取到多行文本的高度+上下的padding值
//处理步骤2.设置到红色背景的布局控件上
holder.tvEInvoiceTitleMangerCompany.setText()之后

//在Adapter的onBindViewHolder() 中
holder.tvEInvoiceTitleMangerCompany.measure(0,0);//先测量,没这个。获取不到值的
int comTitle = holder.tvEInvoiceTitleMangerCompany.getMeasuredHeight();//后获取高度
Logger.d("jhqHeight",comTitle+"");//才会获取到值

第一种场景的2处理方法:

//第二种处理方式:view.post(Runnable)
//在Adapter的onBindViewHolder() 中
holder.tvEInvoiceTitleMangerCompany.post(new Runnable() {
                @Override
                public void run() {
                    //holder.tvEInvoiceTitleMangerCompany.measure(1,2); //不需要测量了,view的post方法已经测量出了最终的高度
                    int comTitle = holder.tvEInvoiceTitleMangerCompany.getMeasuredHeight();
                    Logger.d("jhqHeight"+position,comTitle+"");

                    //holder.tvEInvoiceTaxNumMangerCompany.measure(1,2);//不需要测量了
                    int comTax =    holder.tvEInvoiceTaxNumMangerCompany.getMeasuredHeight();
                    Logger.d("jhqHeightTax"+position,comTax+"");

// 设置红色删除布局的高度
holder.deleteLayoutCompany.setMinimumHeight(comTitle+comTax+CebTools.dipTopx(mContext,28));
                }
            });

//最后测试多行文本内容
holder.tvEInvoiceTitleMangerCompany.setText()

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值