无法访问ViewStub'child

Tof*_*mad 6 android viewstub android-layout

我试图用VIEWSTUB合并内tag.and其工作well.I'm能够赶上onclicklistenrViewStub母公司 button.But我要访问的按钮是viewstub内.

1.Main xml:

<merge>
<LinearLayout>
<Button></Button>
<ViewStub></ViewStub>
</LinearLayout>
</merge>
Run Code Online (Sandbox Code Playgroud)

2.view存根布局

<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>
Run Code Online (Sandbox Code Playgroud)

我在一个活动中膨胀视图存根...这里我想点击按钮取消点击事件.如何可能

Kam*_*men 20

假设您的ViewStub ID是view_stub.您需要在活动中执行以下操作:

ViewStub viewStub = (ViewStub) findViewById(R.id.view_stub);
View inflatedView = viewStub.inflate();
Button button = (Button) inflatedView.findViewById(R.id.button_cancel);
Run Code Online (Sandbox Code Playgroud)

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

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

至于删除ViewStub - 问题是双重的(请查看http://developer.android.com/resources/articles/layout-tricks-stubs.html):

  • 在ViewStub充气之前 - 你实际上无法删除它.但是,没有必要,因为ViewStub"没有维度,它不会绘制任何内容,也不会以任何方式参与布局".

  • 通货膨胀后 - 您只需获取ViewStub.inflate()方法返回的视图,并随意执行任何操作 - 例如,隐藏它.