/ /実行時のカスタムレイアウトの作成、保存、展開-android、android-layout、android-widget、android-xml

実行時にカスタムレイアウトを作成、保存、拡張する - アンドロイド、アンドロイド - レイアウト、アンドロイド - ウィジェット、アンドロイド-xml

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

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

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

回答:

回答№1は2

の膨張方法をご覧ください LayoutInflater。あなたは実際にそれを与えることができます XmlPullParser そのソースとして使用します。 Reader.

つまり、ほぼすべての文字ストリームを膨らませるためのxmlソースとして使用できます。

の始まり XmlPullParser docsには、プルパーサーを作成するための基本的な概要が記載されています。

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

更新 -これは、「 LayoutInflater docs。