我在自定义 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/