1. ホーム
  2. android

[解決済み] 実行時にビューを別のビューに置き換えるAndroidレイアウト

2022-04-16 16:43:50

質問

私は xml -レイアウトファイル main には、2 つのテキストビュー A/B とビュー C があります。 私は、他の2つの xml -レイアウトファイル option1option2 . のどちらかを読み込むことは可能ですか? option1 または option2 をJava経由でランタイムにC言語に変換するのですか?その場合、どのような関数を使用すればよいのでしょうか?

どのように解決するのですか?

いつでも任意のビューを入れ替えることができます。

int optionId = someExpression ? R.layout.option1 : R.layout.option2;

View C = findViewById(R.id.C);
ViewGroup parent = (ViewGroup) C.getParent();
int index = parent.indexOfChild(C);
parent.removeView(C);
C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);

すでに存在する 表示 を設定し、初期化時にオプション1/オプション2のいずれかを選択することで、より簡単に行うことができます。 android:id を親レイアウトに設定し、その後。

ViewGroup parent = (ViewGroup) findViewById(R.id.parent);
View C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);

ビューの構造に応じて、適切な値に "index" を設定する必要があります。また ビュースタブ : C のビューを ViewStub として追加し、その後。

ViewStub C = (ViewStub) findViewById(R.id.C);
C.setLayoutResource(optionId);
C.inflate();

そうすれば、XMLレイアウトを再構築する際に、上記の "index" の値について心配する必要がなくなります。