0

ボタンのクリックに基づいて動的にビューをロードする必要があるAndroid2.1でアプリケーションを開発しています。これが私のアクティビティの大まかなレイアウトです。

ここに画像の説明を入力してください

button1をクリックすると、imageviewが表示され、button2をクリックすると、listviewが表示されます。button3-ボタンと画像の線形レイアウトなどです。すべてのビューは、提供された空白にのみロードする必要があります。

私が従おうと思ったアプローチは「インフレートレイアウト」です。しかし、別のボタンをクリックすると、古いインフレートレイアウトが削除され、新しいインフレートレイアウトが表示されます。

これを達成するためのより良い方法はありますか?レイアウトを膨らませることが唯一のより良い方法である場合、古い膨らんだレイアウトを削除して新しい膨らませたレイアウトをロードするにはどうすればよいですか。

4

3 に答える 3

3

ViewFlipperを使用して、3つのレイアウトを保持し、またはを呼び出すだけで、showNext()どのsetDisplayedChild()レイアウトを表示するかを決定できます。

于 2012-06-19T11:40:31.597 に答える
0

非常によく似た何かをしようとしているようです。ここ TabHostを読んでみてください:http: //developer.android.com/reference/android/widget/TabHost.htmlTabHost

そして、ここのチュートリアルを参照してください:http: //developer.android.com/resources/tutorials/views/hello-tabwidget.html

このような組み込みのコンポーネントを使用してから、同様の機能を自分で実装する方がよいと思います。

于 2012-06-19T11:48:05.447 に答える
0

レイアウトが1つ程度よりも複雑な場合は、膨張が適していますImageView。この場合、ImageViewを動的に作成し、それを「空白」に追加する必要があります(ViewGroup(つまり、RelativeView)である必要があります)。この場合:

mRelativeView.removeAllViews();
ImageView newView = new ImageView(mContext);
newView.setImageResource(R.drawable.someImage);
mRelativeView.addView(newView);

より複雑なレイアウトを使用する場合は、LayoutInflaterを使用してください(ただし、インフレーションは非常に遅いことに注意してください)。

mRelativeView.removeAllViews();
View newView = LayoutInflater.from(mContext).inflate(R.layout.some_layout, null);
mRelativeView.addView(newView);

上記の例mContextでは、たとえば現在のアクティビティにすることができます。

于 2012-06-19T11:46:39.503 に答える