我正在尝试用应该完全相同的自定义复合视图替换一组视图。具体来说,我经常重复以下布局:
<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 个图像正确对齐,使用 3 倍我尝试替换的 LinearLayout 块。只有左上角的图像使用自定义视图。我的猜测是 padding 和 layout_weight 的布局参数丢失了。我做错了什么,还是需要解决方法?