ビューのセットを、まったく同じことを行うはずのカスタム複合ビューに置き換えようとしています。具体的には、次のレイアウトを頻繁に繰り返します。
<LinearLayout style="@style/customLayoutStyle">
<Button style="@style/customButtonStyle" />
<TextView style="@style/customTextViewStyle" />
</LinearLayout>
私の目標は、このブロックを単一の に置き換えること<Highlighter />
です。
この目的のために、 res/layout/highlighter.xml で次のように定義します
<merge xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/customLayoutStyle">
<Button android:id="@+id/btnHighlighter" style="@style/customButtonStyle" />
<TextView android:id="@+id/lblHighlighter" style="@style/customTextViewStyle" />
</merge>
そして、私のカスタムビューには次のようなものがあります
public class Highlighter extends LinearLayout {
public Highlighter(Context context, AttributeSet attrs) {
super(context, attrs);
inflate(context, R.layout.highlighter, this);
}
}
これはほとんど機能しますが、<merge>
タグのレイアウト パラメータの一部が無視されているようです。このスクリーンショットは、何が問題なのかを示しています。一番下の行の 3 つの画像は、置き換えようとしている LinearLayout ブロックを 3 つ使用して、正しく配置されています。左上の画像だけがカスタム ビューを使用しています。私の推測では、padding と layout_weight のレイアウト パラメータが失われています。何か間違ったことをしていますか、それとも回避策が必要ですか?