使用本机窗口小部件扩展ViewStub

时间:2017-06-12 21:30:14

标签: android android-layout viewstub

是否可以使用原生Android小部件来扩充ViewStub?

例如:

<LinearLayout...>
 <TextView...>
 <TextView...>
 <ViewStub...>
</LinearLayout>

我想用Switch或Checkbox替换/膨胀ViewStub。这可能吗?

2 个答案:

答案 0 :(得分:0)

将布局设置为ViewStub

通过XML设置布局:

<ViewStub 
   android:id="@+id/stub"
   android:inflatedId="@+id/myLayout"
   android:layout="@layout/myLayout"
   android:layout_width="match_parent"
   android:layout_height="wrap_content" />

或者,在运行时设置布局:

viewStub.setLayoutResource(R.layout.myLayout);

然后,您可以充气ViewStub

View inflatedView = viewStub.inflate();

您可以根据需要调用此inflate()方法,例如点击SwitchCheckbox(按照您的要求)。

答案 1 :(得分:0)

目前无法用StubView对象替换View。您必须创建表示要替换的视图的布局。例如,如果您想使用单个CheckBox切换它,则需要创建这样的布局

<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/my_checkbox"
    android:text="Click me"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

然后调用

viewStub.setLayoutResource(R.layout.my_checkbox);
viewStub.inflate();

如果您需要对膨胀视图的引用,可以使用此代替

CheckBox checkInflated = (CheckBox)viewStub.inflate();