android开发中遇到一个问题,进入界面时候,listview是隐藏的,但是我要动态这是item中控件的宽度
比如,我自己自定义了一个BaseAdapter,item包括了一个TextView和EditText,在getview的时候,给TextView和EditText赋值,可...
比如,我自己自定义了一个BaseAdapter,item包括了一个TextView和EditText,在getview的时候,给TextView和EditText赋值,可是TextView的宽度都是不一样的,看着很乱,就想动态的获取最长的TextView的width,然后给每个TextView.setWidth(),可是lisetview又是隐藏的,请问这样我该用什么办法,其中viewholder.textview.getWidth()=0
展开
1个回答
展开全部
这样看你listview显示item的布局,如果整个布局下只有一个Listview,TextView和EditText是一上一下的话,直接match_parent即可(最好截个图或把布局代码发出来)。获取listview的item的高度和宽度我提供一个代码:
public static void getListItemWH(ListView listView) {
try {
//获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int len = listAdapter.getCount();//item总数
for (int i = 0; i < len; i++) {
View listItem = listAdapter.getView(i, null, listView);
if (null != listItem) {
listItem.measure(0, 0);//计算子项View的宽高
int h = listItem.getMeasuredHeight();//每一个item的高度
int w = listItem.getMeasuredHeight();//每一个item的宽度
Log.d("test", "h=" + h "; w=" + w);//打印看看
}
}
listView.getDividerHeight();//获取子项间分隔符占用的高度
} catch (Exception e) {
}
}
追问
布局很简单,就是一行 TextView+“:”+EditText,服务器上有个人信息姓名、地址、联系方式等等15个name和value,具体是什么手机端也不知道。从服务器获取这些信息,通过adapter显示,比如 姓名:张三,这就是一行item,现在是想把每个name的长度设置为最长的name的width,可是有些没有在界面上显示就没有绘制,所以getwidth=0,没法取到最长的name的宽
追答
我觉得这样设计不太合理,即使你设置了textview的长度为名字最长的长度,显示名字的时候还是参差不齐,因为每个名字+地址+联系方式的长度不一样。不如把textview的长度写死并且sigleline,超过规定长度的就跑马灯或者省略号,点击textview时候弹出popupwidow显示全信息。后面的全部edittext. 或者textview在上,edittext在下,都是match_parent。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询