Android:来自膨胀布局的自定义视图

我基于RelativeLayout创建自己的布局作为代码中的类

我有XML R.layout.menu_layout中定义的布局的基础知识(样式,可绘制为背景,边距,高度)

如果我不需要课程,那么我会打电话给inflater这样做:

RelativeLayout menuLayout = (RelativeLayout)inflater.inflate(R.layout.menu_layout, root);

但我想改为打电话给我自己的班级

MenuLayout menuLayout = new MenuLayout(myparams);

由于我需要创建一个类,我需要以某种方式继承构造函数中的R.layout.menu_layout,我该怎么做呢?我猜没有this.setLayout(res);或this.setResource(res);在视图中.也许我可以在View构造函数中使用其他两个参数,但我没有找到任何教程如何做到这一点.

最佳答案

public class MenuLayout extends RelativeLayout {
    public MenuLayout(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initView(context);
    }

    public MenuLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView(context);
    }

    public MenuLayout(Context context) {
        super(context);
        initView(context);
    }

    private void initView(Context context) {
        View view = LayoutInflater.from(context).inflate(R.layout.menu_layout, null);
        addView(view);
    }
}

现在你可以使用了

MenuLayout menuLayout = new MenuLayout(myparams);

你可以改变params的构造函数

点赞