您的位置:首页 > 移动开发 > Android开发

TextView中getLineCount()返回为0

2012-02-13 17:37 225 查看
项目需求:

当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。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android google class api null