项目需求:
当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。。