TextView中getLineCount()返回为0

项目需求:

当TextView显示的数据不超过3行的时候,不显示下面的展开按钮,就想到了getLineCount()方法来获取TextView的行数,但总返回为空,看Api 说是要先把TextView画出来,才能获取行数,搜Google发现解决问题办法,使用一个异步线程中执行 onPostExecute()获取行数,代码如下:

private class myAsyncTask extends AsyncTask<Void, Void, Void> {
@Override
   protected void onPostExecute(final Void result) {
       super.onPostExecute(result);
       txtDescribeLineCount = txtDescribe.getLineCount(); //定义的展开前窄行数的TextView
       txtAllDescribeLineCount = txtAllDescribe.getLineCount();  //定义的展开后的宽行数的TextView
       txtOpenClick.setVisibility(txtDescribeLineCount<=3&&txtAllDescribeLineCount <= 3?View.GONE:View.VISIBLE);//超过三行才显示
       txtCloseClick.setVisibility(txtDescribeLineCount<=3&&txtAllDescribeLineCount <= 3?View.GONE:View.VISIBLE);//超过三行才显示
          
   }


@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
return null;
}

}

  然后执行new myAsyncTask().execute();方法即可。。。

结论:

1,带来一个问题是,每次进这个页面的时候都会出现刷屏的感觉,不是一次性就进入页面加载完数据,展示出来,用户体验不好。。

2,期待更好的解决方法啊,先这样吧。。



后来在G14上面判断行数竟然不行,经过调查发现,

   当android:maxLines="3",这个属性设置时候,不用再设置android:ellipsize="end",这个属性了

   因为这么设置之后,就会对行数显示判断出错,显示出"两行汉字..."省略号字样,去掉这个设置之后,利用上面的判断才行。。


另,android:debuggable="false"该属性设置完之后对包名在DDMS中显示有问题,应该设置为android:debuggable="true"才能显示出来,进行实时debug。。









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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值