Android开发-ViewStub使用

ViewStub是一个用于加载布局文件的控件,用于控制在视图中显示那一部分,功能类似于android:visibility属性,可以使用View.Gone来控制某一个视图控件的隐藏和显示。

当然,ViewStub和android:visibility属性还是有一定的区别的,并且有一定的优势。ViewStub在软件启动的时候,软件只加载ViewStub部分的视图,而不加载ViewStub所关联的相应的视图,在有在调用inflate后才加载ViewStub所关联的视图,这样能够减小对手机内存的消耗,而使用View.Gone虽然可以实现对视图控件的隐藏和显示,但是需要在布局文件中提前设置好所有的控件,虽然可以把属性设置为View.Gone,但是在加载相应的视图的时候,依然需要将相应的视图控件全部加载,对内存的消耗太大,所以ViewStub可以起到一定的作用,要适当的使用两者的结合。

但ViewStub有一定的缺陷,它只能加载一次视图控件,加载视图控件之后就不能使用ViewStub再对所关联的视图控件进行设置。

示例代码:

<ViewStub
        android:id="@+id/vs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"

   android:layout_marginLeft="5dip"  

   android:layout_marginRight="5dip"  

   android:layout_marginTop="10dip"
        android:layout="@layout/popupwindow"/>

其中android:layout属性就是其所关联的layout布局

在代码中是findViewById(R.id.vs).inflate();

就可以将所关联的布局显示出来替代ViewStub,同时在ViewStub设置的一些相应的属性也会传递给所关联的布局。

android:layout_marginLeft="5dip"  

   android:layout_marginRight="5dip"  

   android:layout_marginTop="10dip"

都会传递给@layout/popupwindow中的控件

 

posted @ 2015-08-21 17:16  杨MT  阅读(694)  评论(0编辑  收藏  举报