Android关于自定义组件使用<merge>的一点疑问

因为自定义组件要继承一个布局组件才能使用,然而自定义组件的xml布局文件内本身就套了一层布局组件,这样就出现了多套了一层的情况。看网上都是自定义组件内用<merge>标签作为根节点消除这多余的一层嵌套,但是这样的话最外层布局组件的属性就要写在java代码里了,感觉不是特别好。有什么能在解决冗余嵌套的同时还保证布局组件属性写在布局文件内的方法吗?

public class AppHeader extends LinearLayout {
    public AppHeader(Context context, AttributeSet attrs) {
        // 大概就是这个意思,如何将属性的设置写在xml里,还不会产生额外嵌套?
        this.setBackgroundColor(0xffffff00);

        LayoutInflater.from(context).inflate(R.layout.app_header, this);
    }
}
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 一些构成AppHeader的基础组件 -->
</merge>
阅读 1.7k
1 个回答
新手上路,请多包涵

可以卸载外层布局里啊,是可以解析出来的。

val typedArray = 
context.obtainStyledAttributes(attributeSet, R.styleable.RatioRelativeLayout)
...解析
typedArray.recycle()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题