2017-08-10 23 views
1

我使用合并自定义视图中的标签,试图把layout_marginTop或paddingTop于父视图,但不起作用。这里是我的代码 文件名:my_view.xml保证金或填充不工作使用<合并标签的android

<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在代码中设置边距和填充,但仍然无法工作。 您的帮助,将不胜感激!

回答

2

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

它看起来像你继“复合控制”的模式,在这里你创建的一些常见ViewGroup一个子类(一个LinearLayout,也许),然后抬高一些其他的标准View s转换它。如果是这种情况......

<merge>标记中删除所有layout_属性,而是将它们放置在自定义视图的标记上,无论您在屏幕布局中使用它的哪个位置。事情是这样的:

<com.example.stackoverflow.MyView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="17dp" 
    ... 
    />