私は次の解決策を見つけようとしています問題。私が取り組んでいるアプリケーションでは、ユーザーがカスタム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。