因特殊需求需要手動設置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,則其寬高默認跟父容器的寬高相同