vv是listView里面的一个itemviewViewGroup.LayoutParams params = vv.getLayoutParams();
params.height = height;
vv.setLayoutParams(params);我在这段代码前,后分别打印出了height,vv.getHeight();
大多数时候2个值是一直的,说明setLayoutParams是成功的(设置前的vv.getHeight()和设置后的vv.getHeight()是改变了的)但是偶尔会出现设置前vv.getHeight() == 设置后vv.getHeight()的现象(height与vv.getHeight()不等)
说明setLayoutParams失败了?但是这个函数的返回值是void啊。。
也没说有失败的情况。
我本想着在外面加个while do
直到设置成我需要的值才跳出该段代码,实际效果是会出现timeout的现象求原因 求解决方法

解决方案 »

  1.   

    设置后马上取得的vv.getHeight();
    好像不可信。。
    刚才发现过段时间再取次的值
    可能就正确了
    但是这段代码所在的函数是被频繁调用的。。(0.1s以内)
      

  2.   

    vv.setLayoutParams(new LayoutParams(width,height));
    试试
      

  3.   

    已解决 
    问题应该是ui不是每次设置进去了马上就刷新的
    所以再次get的高度可能不正确
    只要在设置完之后强制刷新下就可以了
      

  4.   


    强制刷新?调用invalidate()?
      

  5.   


    =========================================
    已解决:
    mView.post(new Runnable() {

    @Override
    public void run() {
                mView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    }
    });