2

Android 開発は初めてで、1 つの Android アプリケーションを開発します。このアプリでは、xml レイアウトを動的に生成したいと考えています。アプリにログインした後、サーバーはさまざまな属性の説明 (各コントロールの検証、最大長、コントロールのサイズなど) を含むコントロールの説明を含む xml テンプレートを送信します。つまり、事前定義された xml レイアウトはありません。

私の計画は、ダウンロードした xml テンプレートから xml レイアウトを作成し、その xml を sqlite データベースに保存することです。ユーザーがレコードをクリックすると、この動的に作成されたフォームがユーザーに表示されます。

xml レイアウトを変更することは可能ですか (innerxml の設定など)?

4

6 に答える 6

2

あなたはそのようなことを試すことができます:

LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View myView = inflater.inflate(myXmlPullParser, null);

setContentView(myView);
于 2012-06-26T07:29:42.500 に答える
2

ビューのドキュメントに基づく:

重要パフォーマンス上の理由から、ビューのインフレーションは、ビルド時に行われる XML ファイルの前処理に大きく依存しています。したがって、現時点では、実行時にプレーン XML ファイルに対して XmlPullParser で LayoutInflater を使用することはできません。

レイアウト res ディレクトリ内にない場合、レイアウトを膨張させることはできません。

于 2012-06-26T07:37:21.073 に答える
0

線形レイアウトのみの xml レイアウトを 1 つ取得し、onCreate で id を使用してレイアウトにアクセスし、すべてのビューをプログラムで作成し、線形レイアウトにサブビューとして追加し、後でその xml レイアウトを setContentView として設定することができます。後でビューを追加したい場合は、View Created の後に UI スレッドを実行してビューを追加できます。

于 2012-06-26T07:30:33.510 に答える
0

xml を動的に作成するのではなく、必要なビューをプログラムで作成することを検討する必要があると思います。高度なビューの場合は、TheWAlkingCube が提案したように行う必要があり、xml ビューを動的に膨張させます。

于 2012-06-26T08:11:00.657 に答える
0

この方法を主張する場合は、受け取った xml ファイルをプログラムで解析し、受け取ったファイルで要求されている方法に基づいてプログラムで xml レイアウトの各ビューを追加する必要があります。

于 2013-08-14T09:03:09.973 に答える
0

Android は、ユーザーの作業方法を完全にサポートしているわけではありませんが、独自のレイアウトを動的に構築できます。

独自のTemplateBuilderクラスを作成します。このクラスは、サーバーからレイアウト ファイルを取得します (データベースに保存することもできます)。XML ファイルを読み取ることができ、定義済みの各項目を実行時に追加できます。前に述べたように、これは Android での従来の作業方法ではありませんが、最良の選択肢となります。

レイアウトでより頻繁に使用される特定の ViewGroups またはレイアウトがある場合は、それらをresフォルダー内の XML ファイルとして定義し、必要に応じて展開できます。定義済みのレイアウト ブロックを作成して、必要なときにいつでも膨らませることができ、文字通りカスタム レイアウトを構築できます。

実行時にビューを追加する例については、以下のリンクにアクセスしてください: http://www.dreamincode.net/forums/topic/130521-android-part-iii-dynamic-layouts/

于 2012-06-26T08:11:30.983 に答える