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

时间:2013-07-24 14:19:26

标签: android android-layout android-view

我正在基于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构造函数中使用其他两个参数,但我没有找到任何教程如何做到这一点。

1 个答案:

答案 0 :(得分:2)

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的构造函数我认为