ViewStub是安卓中的動态裝載控件,作用和include相似,可以加載其他的布局檔案。下面我們來介紹一個這個控件的使用方法。
實作的是上面有一個星行,下面是兩個按鈕,點選按鈕用于動态添加布局和動态隐藏布局。
整體思路:建立一個xml檔案,添加一個RatingBar控件,在原來的xml檔案中添加一個include,指向這個新的xml檔案,再添加一個ViewStub控件和二個Button控件;在活動中設定兩個按鈕的OnClick事件,在其中一個中寫入把建立的xml檔案中的RatingBar控件綁定到ViewStub控件上,并設定初始·的星數;在另一個中隐藏這個ViewStub控件。
activity_main.xml檔案:
<!-- 靜态加載布局檔案 -->
<include
android:layout_width="wrap_content"
android:layout_height="wrap_content"
layout="@layout/next"
/>
<!-- 動态加載布局檔案 -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFCCDD"
>
<ViewStub
android:id="@+id/stub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout="@layout/next"
/>
</LinearLayout>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="動态添加布局" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="動态隐藏布局" />
next.xml檔案:
<RatingBar
android:id="@+id/ratingBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
MainActivity.java檔案:
private Button button1,button2;
private ViewStub viewStub;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1=(Button)findViewById(R.id.button1);
button2=(Button)findViewById(R.id.button2);
viewStub=(ViewStub)findViewById(R.id.stub);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//表示條填充動态布局
View view=viewStub.inflate();
LinearLayout layout=(LinearLayout)view;
RatingBar bar=(RatingBar)layout.findViewById(R.id.ratingBar1);
bar.setNumStars(3);
}
});
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
viewStub.setVisibility(View.GONE);//隐藏動态加載的布局
}
});
}