【问题标题】:Inflate ViewStub with a native widget使用本机小部件膨胀 ViewStub
【发布时间】:2017-06-12 21:30:13
【问题描述】:

是否可以使用原生 android 小部件为 ViewStub 充气?

例如:

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

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

【问题讨论】:

  • 你读过这里吗? stackoverflow.com/a/37442268/2910520,你需要的是一样的东西
  • 是的,我做到了。这与我试图膨胀的布局用于原生 android 小部件并不完全相同。我没有明确的布局。
  • 你应该创建一个新的布局来代表你想要膨胀的东西。目前没有办法在 StubView 中膨胀 View 对象

标签: android android-layout viewstub


【解决方案1】:

要将布局设置为膨胀到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() 方法,例如单击Switch 或Checkbox(如您所要求的那样)。

【讨论】:

  • 如果我想给一个原生的android switch 小部件充气应该设置什么布局资源呢?
  • 您创建了一个包含 Switch 小部件的布局文件。然后扩充该布局资源。
【解决方案2】:

目前无法将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();

【讨论】:

    猜你喜欢
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    相关资源
    最近更新 更多