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。。
当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获取TextView行数getLineCount()返回0
- 安卓Textview的getLineCount返回0
- 动态设置TextView的对齐方式以及getLineCount的使用
- 关于Textview的getLineCount返回0
- android TextView getlinecount返回0
- Textview的getLineCount返回0
- C#winform: GetLineCount of one control
- 关于TextView getLineCount问题
- getCudaEnabledDeviceCount()返回0
- 关于ADO记录集GetRecordCount()返回记录条数-1的问题
- cin.getline对cin.gcount()的影响
- cin.getline对cin.gcount()的影响
- TextView Get Line Count Return 0?
- MFC用 ADO连接数据库,get_RecordCount总是返回-1解决办法
- abdroid关于TextView.getLineCount() 为0
- Android获取TextView行数方法getLineCount()返回值为0
- Acess中GetRecordCount()返回-1问题
- android 关于TextView getLineCount() 获得的值始终为0问题
- 获取TextView每行的内容 (涉及getLineCount为0,getLineEnd问题)
- getCountLine() 为0的问题