星期一, 九月 08, 2014

嵌入在ScrollView里的GridView如何动态修改Layout 宽度? GridView In ScrollView programmatically change layout size ?

其实宽度修改都很简答。
以下伪代码:
GridView gv = this.findViewById(R.id.gridview_id);
               gv.getLayoutParams(). width = 1965;//px width
              gv.getLayoutParams(). height = LayoutParams. WRAP_CONTENT;
然后根据需要调用这个UI 刷新即可,一下两行代码可有可无. 
                   View vg =   getWindow().getDecorView().getRootView();
                   vg.invalidate();   
但是如果想给GridView加上水平滚动条则问题就有些麻烦了.需要将GridView嵌入在ScrollView或者HorizontalScrollView

<HorizontalScrollView>
 <GridView></GridView>
</HorizontalScrollView>

此时在代码中修改LayoutParams.width的方法,发现对GridView突然不起作用了.这个时候一个奇怪的技巧就起作用了.
将GridView再包围一个Layout即可。
修改为:
<HorizontalScrollView>
      <LinearLayout  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:orientation="vertical" >
 <GridView></GridView>
</LinearLayout>
</HorizontalScrollView>
这个技巧花费了数天才无意中发现。