我正在尝试在合并标记内使用VIEWSTUB,并且它工作正常。我能够捕获 ViewStub父按钮的 onclicklistenr 。但是我想访问viewtub内的按钮。

1.主要xml:

<merge>
<LinearLayout>
<Button></Button>
<ViewStub></ViewStub>
</LinearLayout>
</merge>

2.查看 stub 布局



<Button android:id="@+id/button_cancel" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:minWidth="100dip"
android:text="Next" />
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:background="@drawable/golden_gate"
/>
</LinearLayout>

我正在为 Activity 添加 View stub ...在这里我想在按钮取消时触发点击事件。

最佳答案

假设您的ViewStub ID为view_stub。您需要在 Activity 中执行以下操作:

ViewStub viewStub = (ViewStub) findViewById(R.id.view_stub);
View inflatedView = viewStub.inflate();
Button button = (Button) inflatedView.findViewById(R.id.button_cancel);

现在,您可以使用按钮进行任何操作:)也就是说,inflate方法返回 stub 布局,其中包含XML文件中的实际元素。

当然,您始终可以拥有onClick XML属性...

至于删除ViewStub-问题有两个(检查http://developer.android.com/resources/articles/layout-tricks-stubs.html):

在ViewStub膨胀之前添加
  • -您实际上无法将其删除。但是,没有必要,因为ViewStub“没有尺寸,它不会绘制任何内容,也不会以任何方式参与布局”。
  • 通货膨胀后的
  • -您只需要使用ViewStub.inflate()方法返回的View并对其进行任何处理即可-例如,将其隐藏。
  • 10-08 17:53