8

次の問題の解決策を見つけようとしています。私が取り組んでいるアプリケーションでは、ユーザーがカスタム UI ビルダーを介してカスタム UI (単純なウィジェットのレイアウト) を作成できる必要があります。そのため、ユーザーはキャンバスにウィジェット (主に画像。ただし、TextView と EditText も同様) をスタックしたり、移動したりできます。UI は、将来の使用のためにデータベースに保存する必要があります。そのため、この UI をロードして膨張させるための何らかのメカニズムが必要です。これが主な問題です。

私の最初のアイデアは、標準の Android レイアウト メカニズムに依存することでした。残念ながら、LayoutInflater はバイナリ形式にコンパイルされた XML で動作します。私の知る限り、実行時に XML 文字列をバイナリ表現にコンパイルすることはできません。

誰もそのような問題を経験したことがありますか?助言がありますか?

4

1 に答える 1

2

LayoutInflaterのインフレートメソッドを確認してください。実際にXmlPullParserは、そのソースとして使用する any を与えることができますReader

つまり、ほぼすべての文字ストリームをインフレート用の xml ソースとして使用できます。

XmlPullParserドキュメントの冒頭には、プル パーサーを作成するための基本的な概要が示されています。

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader("<foo>Hello World!</foo>"));

更新LayoutInflater-ドキュメントに記載されているように、これは機能しません。

于 2011-04-05T14:53:07.297 に答える