viewStub使用注意点

因特殊需求需要手动设置listview的高度值,listview的item里面有的item有的item使用了viewStub,来只在需要的时候infalte出布局,此时必须将viewStub的layout_height设置为固定值,如果使用wrap_content,即使在android:layout="@layout/inflated_layout"的inflated_layout里面的根布局指定具体高度,实际inflate出来的高度不是里面根布局指定的高度,在华为上测试inflate出来的布局高度大于根布局设置的具体高度.

这个问题导致我设置的listview的高度一直不准确,虽然是小知识点,但却困扰了我一天.仅此记录一下.

正确写法:

```

android:layout_width="match_parent"

android:layout_height="30dp"

android:id="@+id/viewStub"

android:layout="@layout/linear_inflated"/>

```

错误写法:

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,则其宽高默认跟父容器的宽高相同

你可能感兴趣的:(viewStub使用注意点)