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 展开
 我来答
JulioHu706
2016-11-07 · TA获得超过653个赞
知道小有建树答主
回答量:789
采纳率:0%
帮助的人:435万
展开全部

这样看你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。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式