使用<merge tag =“”android =“”

时间:2017-08-10 20:48:53

标签: android xml

=“”

我在自定义视图中使用合并标记并尝试设置边距或填充不起作用父视图上的layout_marginTop或paddingTop,但不起作用。这是我的代码 文件名:my_view.xml

<merge
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android_layout_marginTop="17dp" >  // This margin is lost!
    // content here  ...
</merge>

所以在我的自定义视图文件MyView.java中,我只是对这个my_view.xml进行了充气。但是android_layout_marginTop信息丢失了。

public class MyView {
    private void initViews() {
        View view = LayoutInflator.from(context).inflate(R.layout.my_view, this);
        // get rest views
    }
}

我尝试使用LayoutParams在代码中设置边距和填充,但仍然无法正常工作。 非常感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

<merge>标记不是View,因此尝试在其上设置边距不起作用。

看起来你正在遵循“复合控制”模式,你可以在其中创建一些常见的ViewGroup(也许是LinearLayout)的子类,然后夸大其他标准{{1}进入它。如果是这样的话......

View标记中删除所有layout_属性,然后将它们放在自定义视图的标记上,无论您在屏幕的布局中使用它。像这样:

<merge>