因特殊需求需要手动设置listview的高度值,listview的item里面有的item有的item使用了viewStub,来只在需要的时候infalte出布局,此时必须将viewStub的layout_height设置为固定值,如果使用wrap_content,即使在android:layout="@layout/inflated_layout"的inflated_layout里面的根布局指定具体高度,实际inflate出来的高度不是里面根布局指定的高度,在华为上测试inflate出来的布局高度大于根布局设置的具体高度.
这个问题导致我设置的listview的高度一直不准确,虽然是小知识点,但却困扰了我一天.仅此记录一下.
正确写法:
```
<ViewStub
android:layout_width="match_parent"
android:layout_height="30dp"
android:id="@+id/viewStub"
android:layout="@layout/linear_inflated"/>
```
错误写法:
<ViewStub
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/viewStub"
android:layout="@layout/linear_inflated"/>
结论:
ViewStub使用wrap_content设置layout_height,inflate出来的view所占的实际高度并非inflate的布局文件设置的高度,可能要大于它.
如果有同样需要手动设置listview高度的同学可以注意一下,感觉android在一些小地方经常有坑.
2016.11.15更新:
自定义View如果layout_height或者layout_width设置为wrap_content,则其宽高默认跟父容器的宽高相同