セキュリティ上の理由からおそらく不可能だと思いますが、確認したいのですが、Androidで外部XMLファイルからレイアウトを作成することは可能ですか?
正確に言うと、リモート サーバーで XSL を使用して XML 出力を作成しています。必要なレイアウトをサーバー上で直接作成し、Android アプリにダウンロードすることができました。
セキュリティ上の理由からおそらく不可能だと思いますが、確認したいのですが、Androidで外部XMLファイルからレイアウトを作成することは可能ですか?
正確に言うと、リモート サーバーで XSL を使用して XML 出力を作成しています。必要なレイアウトをサーバー上で直接作成し、Android アプリにダウンロードすることができました。
それは無理だ。Android の XML レイアウトは XML として保存されません。パフォーマンス上の理由から、これらはコンパイル中に前処理され、バイナリ形式で保存されます。レイアウト インフレータは、xml ではなくバイナリ形式のみを認識します。
もちろん、実行時にビューを動的に作成することもできますが、これが最善の解決策であるとは確信していません。Android の内部を見てみると、XML を介して作成されたすべての View は、 Context と - さらに興味深い - AttributeSetという 2 つのパラメーターを持つコンストラクターで呼び出されます。適切な形式を追跡しながら、解析に多くの作業があると思います。サーバーの出力に応じて、少なくとも値を設定し、Java で自分でビューを作成できます。
それは可能ですが、単純なレイアウトのみをロードする方法を見つけました:
Resources resources=context.getPackageManager().getResourcesForApplication(targetPackage);
int resID = resources.getIdentifier("widget_layout" , "layout", TARGET_PACKAGE);
XmlResourceParser parser = resources.getLayout(resID);
View themeLayout = LayoutInflater.from(this).inflate(parser, null);
おそらく、LayoutInflator の inflate 関数が機能します。
EDIT:まだ動作していないようです。