[解決済み] Android - ビューにビューを動的に追加する
2022-04-27 21:38:42
質問
ビューのレイアウトがあります。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="0px"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/items_header"
style="@style/Home.ListHeader" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/items_none"
android:visibility="gone"
style="@style/TextBlock"
android:paddingLeft="6px" />
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/items_list" />
</LinearLayout>
メインアクティビティで、次のようなレイアウトにしたいのです。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="0px"
android:id="@+id/item_wrapper">
</LinearLayout>
データモデルをループして、最初のレイアウトで構成される複数のビューをメインレイアウトに注入したいのです。 コントロールを完全にコード内に構築することによってこれを行うことができることは知っていますが、すべてをコード内に置くのではなく、レイアウトを使い続けることができるように、ビューを動的に構築する方法があるのかどうか疑問に思っていました。
どのように解決するのですか?
を使用します。
LayoutInflater
を使用してレイアウトテンプレートに基づいたビューを作成し、必要なビューにそれを注入します。
LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = vi.inflate(R.layout.your_layout, null);
// fill in any details dynamically here
TextView textView = (TextView) v.findViewById(R.id.a_text_view);
textView.setText("your text");
// insert into main view
ViewGroup insertPoint = (ViewGroup) findViewById(R.id.insert_point);
insertPoint.addView(v, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
ビューを挿入したい場所のインデックスを調整する必要があるかもしれません。
さらに、親ビューにどのように収めたいかに応じて LayoutParams を設定します。
FILL_PARENT
または
MATCH_PARENT
など。
関連
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
アンドロイドプロジェクトのパッケージングにgradleを使用する際の問題点
-
アンドロイドスタジオでJunitのエラー問題を解決する
-
telnet'が内部コマンドまたは外部コマンドとして認識されない 解決方法
-
repo: コマンドが見つかりません
-
android bluetooth--Bluetooth on、検索、ペアリング、接続
-
Android Studioのgitの使用とgitの設定パス
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Androidのadbデバイスがオフラインであることが判明
-
android.os の NetworkOnMainThreadException。
-
Gradle の同期に失敗しました。com.android.tools.build:gradle が見つかりませんでした。
-
デフォルトのアクティビティが見つからない場合の対処法
-
アンドロイドプロジェクトのパッケージングにgradleを使用する際の問題点
-
最新のandroidプロジェクトディレクトリにあるarmeabi-v7aとarmeabiの具体的な意味とその違いを教えてください。
-
アンドロイドのエリプサイズを使用する
-
Android ProgressBarの色を変更する
-
超シンプルなアンドロイドのタイムディレイ機能
-
[解決済み] AndroidでViewを動的に追加・削除するには?