8

マージ タグ内で VIEWSTUB を使用しようとしていますが、うまく機能しています。ViewStub の親ボタンのonclicklistenrをキャッチできます。

1.メイン xml:

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

2. スタブ レイアウトの表示

<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>

アクティビティでビュースタブを膨らませています...ここでは、キャンセルボタンでクリックイベントを発生させたいと考えています。

4

1 に答える 1

23

ViewStubIDがview_stubであると仮定しましょう。アクティビティでは、次のことを行う必要があります。

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

これで、ボタンを使用して好きなことを行うことができます:)つまり、inflateメソッドは、XMLファイルの実際の要素を含むスタブレイアウトを返します。

もちろん、いつでもonClickXML属性を持つことができます...

ViewStubの削除に関しては、質問は2つあります(http://developer.android.com/resources/articles/layout-tricks-stubs.htmlを確認してください)。

  • ViewStubの膨張前-実際に削除することはできません。ただし、ViewStubには「寸法がないため、何も描画せず、レイアウトに一切関与しない」ため、必要はありません。

  • インフレーション後-ViewStub.inflate()メソッドによって返されたビューを取得し、それを使って好きなことを実行します-たとえば、非表示にします。

于 2011-05-12T07:23:22.290 に答える