私は自分のアプリケーションで使用するために作成したXMLファイルを読み込もうとしています。レイアウトファイルはAPKプロセスを構築する際にコンパイルされるため、XMLファイルをリソースとして使用することはできません。レイアウトフォルダの外でレイアウトを使用/作成/ロードする方法はありますか?ユーザーが作成したレイアウトを読み込み
答えて
AndroidプロジェクトのXMLファイルはビルド時に処理され、バイナリ形式に変換されるため、任意のXMLを展開することはできません。言い換えると、Java APIを使用してプログラムでレイアウトを構築することしかできません。あなたは何ができるか
はXmlPullParser
例えば(標準XMLパーサーで、ユーザーのファイルを解析し、ビューを自分で構築しています。基本的に、あなたは、オンラインのソースコードを見つけることができLayoutInflater
を、再実装されるだろうです。
例えば、彼らはandroid:textColor="@color/some_color"
のような何かをすることができませんでした。ビルド処理は、これらのような参照をリソース値へのポインタに変えますが、単純にこれをプレーンなXMLで読むと、それはちょうどテキスト"@color/some_color"
となります。
おそらくユーザーが本格的なAndroidレイアウトのXMLを作成するには、サポートするものの限定されたサブセットを選択し、これらのカスタムレイアウトをより簡単に記述する方法を定義する必要があります。 XMLを使用する必要はなく、必要なものだけでカスタムの「言語」を定義することができます。こうすることで、ユーザーをテキストのような比較的シンプルなAPIに限定することができます。カスタム言語で定義されたフィールドの一部をtextView.setTextColor()
の呼び出しにマップするだけです。
ファイルからXmlPullParserを作成し、レイアウトインフレータに渡すことができます。 https://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html
そしてXMLPullParserオブジェクトを持った後、あなたは、このメソッドを呼び出すことができます:あなたはこの例に従うことができ、あなたのファイルからXMLPullParserを作成するには
https://developer.android.com/reference/android/view/LayoutInflater.html#inflate(org.xmlpull.v1.XmlPullParserを、android.view.ViewGroup)を
あなたが必要ビューの親となるViewGroup。ビューをアクティビティにする必要がある場合は、レイアウトで空のアクティビティを作成し、解析されたレイアウトを空のレイアウトに追加することをお勧めします。親なしでレイアウトを拡張しようとしないでください。異なるデバイスで別個の結果を得ることができます。
実際には通知レイアウトですので親はありません:/ – greywolf82
@ greywolf82 NotificationBuilderはRemoteViewsを期待しています。私はあなたが空のレイアウトファイル(ビューグループだけ)とLayoutFormatからインフレータブルビューを追加するaddView(View)メソッドを使用した後にRemoteViewsを作成できると思います。また、RemoteViewを親として使用することもできます。 – jonathanrz
文書には次のようなものがあります。重要パフォーマンス上の理由から、ビューのインフレーションは、ビルド時に行われるXMLファイルの前処理に大きく依存します。したがって、実行時にプレーンXMLファイルでXmlPullParserを使用してLayoutInflaterを使用することは現時点では不可能です。 – greywolf82
- 1. レイアウトのレイジー読み込み
- 2. レイアウトの読み込みが遅い
- 3. PyQt4で読み込みウィンドウを作成
- 4. Orbeon Form Builder - リモートログインしたユーザーのWindowsユーザー名を読み込み
- 5. レイアウトの読み込み遅延
- 6. JavaFX - 保存/読み込み - 図形/レイアウト
- 7. データ(オブジェクト)の作成と読み込み
- 8. MSSQLデータの作成と読み込み
- 9. iCloud:ユーザーが作成したディレクトリを読み取る方法
- 10. ユーザーがスクロールして画像を読み込むための遅延読み込みプラグインですか?
- 11. R:pngラスタのリストを作成し、grid.rasterを読み込みます。
- 12. Javaソフトウェアで作成されたini4jエラー読み込みファイル
- 13. アンドロイドアプリの読み込み時にxmlレイアウトがクラッシュする
- 14. バイナリファイルを読み込むメソッドの作成
- 15. Androidのアクティビティが間違ったレイアウトを読み込む
- 16. ユーザーが下にスクロールした場合にiframeを読み込みます。
- 17. フォームを読み込んで、そのフォームにユーザーが適用した変更を読み込む方法は?
- 18. firebase呼び出しが完了したときにのみレイアウトを読み込みます。
- 19. 読み込みインクルードファイルがPHPスクリプトの読み込みを遅くしますか?
- 20. Newtonsoftを使用したVB.netでのJSONの作成と読み込み
- 21. JSまたはajaxで新しいhtmlを作成すると、htmlレイアウトが読み込まれますか?
- 22. ページの読み込み中にモーダルを読み込む読み込み後に
- 23. マルチスレッドを使用したファイル読み込みの書き込み
- 24. シリアルポートの書き込みが成功し、読み込みに失敗する
- 25. C - 作成/書き込み/名前付きパイプの読み込み
- 26. Nimでバイナリファイルを作成/読み込みする
- 27. mvvmで一般的な読み込みアニメーションを作成
- 28. 条件付きで.plistファイルを作成/読み込みます。
- 29. レールで読み込み可能なモデルを作成する
- 30. Androidで読み込み不可能なディレクトリを作成する
私は知っているので、普通の場合これを行う方法はありません – Vyacheslav