android - margin 或填充不工作使用 <merge 标签 android

标签 android xml

我在自定义 View 中使用合并标签并尝试在父 View 中设置 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>

所以在我的自定义 View 文件 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 在代码中设置边距和填充,但仍然无法正常工作。 非常感谢您的帮助!

最佳答案

<merge>标签不是 View ,因此尝试为其设置边距是行不通的。

看起来您正在遵循“复合控制”模式,您在其中创建了一些常见的子类 ViewGroup (一个 LinearLayout ,也许)然后膨胀一些其他标准 View进入它。如果是这样的话……

删除所有 layout_来自 <merge> 的属性标签,而不是将它们放在自定义 View 的标签上,无论您在屏幕布局中使用它的什么地方。像这样:

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

关于android - margin 或填充不工作使用 <merge 标签 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45623225/

相关文章:

android - 自定义passwordToggleDrawable在TextInputLayout中太大

android - 如何从列表中删除复选框项目

java - Android - SugarORM - 从表中选择对象

java - 如何在另一个 ImageView 之上创建一个 ImageView(在嵌套的 LinearLayout 中)

mysql - 不正确的日期值 : '2016-06-05T00:00:00+05:30' for column '' in MySql

xml - 在 XPath XSL 中执行 "Group By"查询

Android:两个不同 View 的同步滚动

java - 如何使用多方上传视频文件时显示进度条

xml - 如何验证 CCD HL7 文档?

android: Activity 作为大屏幕的子屏幕?