[解決済み] RelativeLayoutをmergeとincludeで動作させる方法とは?
質問
私は数日前から、レイアウトをより効率的にするために、何段階ものネストした
LinearLayouts
を 1 つの
RelativeLayout
に変更したところ、いくつかの問題に遭遇し、その回避策を見つけることができませんでした。
Android beginners group やこのサイトを検索しましたが、問題を解決するのに役立つものを見つけることができませんでした。
あるブログで、merge と include タグを使用してレイアウトを組み合わせることができると読みました。そこで、私が持っているのは、メイン レイアウト ファイルに
RelativeLayout
ルート要素があります。 その中に5つのincludeタグがあり、それぞれルートにマージ要素を持つ5つの異なるxmlレイアウトファイルを参照しています(私のマージファイルはすべて、その中のIDを除いて同じものです)。
レイアウト コードの簡略版を投稿した後で説明しますが、2 つの問題に遭遇しています。
サンプル メイン レイアウト ファイル。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/translucent_gray" >
<include
android:id="@+id/running_gallery_layout_id"
layout="@layout/running_gallery_layout" />
<include
android:id="@+id/recent_gallery_layout_id"
layout="@layout/recent_gallery_layout"
android:layout_below="@id/running_gallery_layout_id" />
<include
android:id="@+id/service_gallery_layout_id"
layout="@layout/service_gallery_layout"
android:layout_below="@id/recent_gallery_layout_id" />
<include
android:id="@+id/process_gallery_layout_id"
layout="@layout/process_gallery_layout"
android:layout_below="@id/service_gallery_layout_id" />
</RelativeLayout>
同梱のマージファイルのサンプルです。
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
style="@style/TitleText"
android:id="@+id/service_gallery_title_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text="@string/service_title" />
<Gallery
android:id="@+id/service_gallery_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_below="@id/service_gallery_title_text_id" />
<TextView
style="@style/SubTitleText"
android:id="@+id/service_gallery_current_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/service_gallery_title_text_id"
android:layout_above="@id/service_gallery_id" />
</merge>
私は2つの問題に遭遇しています。
1)その
android:layout_*
属性は、includeタグで使用すると無視されるようで、マージされたレイアウトがすべて重なって表示されます。 この投稿によると、(
http://developer.android.com/resources/articles/layout-tricks-reuse.html
) "任意の
android:layout_*
属性は
<include />
タグと併用することができます。
2) これがうまくいかなかったので、今度は
android:layout_below
属性を最初の
TextView
属性を追加しました。つまり、各マージファイルは別のマージ レイアウト ファイルから ID を参照することになります...。ほとんどの場合、これは実際に機能し、私のレイアウトは正常に見えます。 しかし、ある項目でエラーが発生しました。
android:layout_below
属性の1つで、私が指定したidが見つからないというエラーが発生しました... 私は、idが正しいことを確認するために、二重三重にチェックしました。 最も奇妙なのは、私が
AutoFill
機能を使用して、最初の場所で属性に id を配置したことです。
どなたか提案や回避策をお持ちでしたら、ぜひ試してみてください。 また、5 つのマージ xml レイアウト ファイルの代わりに 1 つのマージ xml レイアウト ファイルを作成する方法をご存知の方がいらっしゃいましたら、ぜひ教えてください。 実行時にマージ レイアウト ファイル内の各項目にアクセスする必要があるため、そのような方法を見つけることができませんでした。
どのように解決するのですか?
includeタグに問題があります。確認してください。 https://issuetracker.google.com/issues/36908001
この問題を解決するために、必ず両方の
layout_width
と
layout_height
を含む場合、それ以外の場合はすべて無視されます。
関連
-
[解決済み] Android XML drawable ファイルに円形を定義する方法を教えてください。
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] 2 つの Git リポジトリをマージする方法は?
-
[解決済み] require, include, require_once, include_onceの違い?
-
[解決済み] Git で特定のコミットをマージする方法
-
[解決済み] git merge` で `--no-ff` フラグはどのような効果がありますか?
-
[解決済み] Androidレイアウトのフォルダにサブフォルダを含めることはできますか?
-
[解決済み】JavaScriptで2つの配列を結合し、項目の重複を排除する方法
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] Gmailの3分割アニメーションシナリオの完全動作サンプル?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] FloatingActionButtonのサンプルとサポートライブラリ
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] 通知をクリックした後にアプリケーションを開く
-
[解決済み] 非ActivityクラスでContextを取得する [重複].
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] ProjectScopeServices に Factory タイプのサービスはありません。
-
[解決済み] FABアイコンの色を設定する
-
[解決済み] Androidの環境設定。ユーザーが環境設定画面を使用していない場合、デフォルト値を読み込むにはどうすればよいですか?
-
[解決済み] Travis.yml ./gradlew : パーミッションが拒否されました。