外部 XML ファイルを使用してレイアウトを動的に調整することはできません。
のドキュメントでは、次のLayoutInflater#inflate(XmlPullParser, ViewGroup)理由が説明されています。
重要 パフォーマンス上の理由から、ビューのインフレーションは、ビルド時に行われる XML ファイルの前処理に大きく依存しています。したがって、現時点では、実行時にプレーン XML ファイルに対して XmlPullParser で LayoutInflater を使用することはできません。
ただし、コードでレイアウトを動的に作成することもできます。たとえば、Android ランタイム レイアウト チュートリアルを参照してください。
そのため、レイアウト情報を保持するファイルをサーバーに配置し、アプリで取得して解析し、レイアウトを動的に作成できます。基本的に Android のLayoutInflater. 明らかに、フォーマットを必要な基本だけに単純化できますが、それでもまだ必要ではない多くの作業があります。
レイアウト情報が、フィールドの名前を持つ単なるプレーン テキスト ファイルであると仮定しましょう
name
surname
email
次に、それを行ごとに読み取り、次EditTextのような方法で単純な for each を作成できます
private View getDynamicLayout(ArrayList<String> lines) {
LinearLayout ll = new LinearLayout(this);
for (String line : lines) {
EditText et = new EditText(this);
// fill it with some text
et.setText(line);
ll.addView(ll);
}
return ll;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<String> layoutConfig = readConfigFromFile();
View layout = getDynamicLayout(layoutConfig);
setContentView(layout);
}
ただし、本当に必要でない限り、アプリを定期的に更新することをお勧めします。また、独自に情報を作成するよりも、前処理されたレイアウトを使用する方が高速です。
また、上記の例 (ファイルの読み取り) のように、UI スレッドで重いディスクやネットワーク アクセスを行わないように注意してください。これは、バックグラウンド タスクで実行する必要があります。