1. ホーム
  2. android

[解決済み] XMLレイアウトにおけるAndroidの<merge>タグは何のためにあるのですか?

2022-03-25 11:14:53

質問

私が読んだのは ロマンガイの投稿 についてです。 <merge /> というタグがあるのですが、これがどう便利なのか、まだよく分かっていません。の置き換えなのでしょうか? <Frame /> タグのような使い方をするのでしょうか。

<merge xmlns:android="....">
<LinearLayout ...>
    .
    .
    .
</LinearLayout>
</merge>

では <include /> を別のファイルに書くのですか?

解決方法は?

<merge/> は、不要なViewGroups、つまり、単に他のビューをラップするために使用され、それ自体には何の役にも立たないレイアウトを取り除くことができるため、便利です。

例えば、あなたが <include/> をマージせずに別のファイルからレイアウトした場合、2つのファイルは次のようになります。

layout1.xml。

<FrameLayout>
   <include layout="@layout/layout2"/>
</FrameLayout>

layout2.xml。

<FrameLayout>
   <TextView />
   <TextView />
</FrameLayout>

であり、機能的にはこの単一レイアウトと同等である。

<FrameLayout>
   <FrameLayout>
      <TextView />
      <TextView />
   </FrameLayout>
</FrameLayout>

layout2.xmlのそのFrameLayoutは、役に立たないかもしれません。 <merge/> はそれを取り除くのに役立ちます。 以下は、mergeを使ったときの様子です(layout1.xmlは変更されません)。

layout2.xml。

<merge>
   <TextView />
   <TextView />
</merge>

このレイアウトと機能的に同等です。

<FrameLayout>
   <TextView />
   <TextView />
</FrameLayout>

を使用していますが <include/> を使えば、そのレイアウトを他の場所で再利用することができます。 FrameLayoutsだけを置き換えるために使う必要はありません。ビューの見え方や動作に有用なものを追加していないレイアウトを置き換えるために使うことができます。