为Android Lollipop构建一个向后兼容的自定义视图(代码重复很少)

时间:2014-12-19 17:08:47

标签: android android-custom-view custom-view

我想为Android-L构建一个自定义视图,支持四参数构造函数:

View(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

理想情况下会调用超级构造函数然后执行一些启动工作:

MyCustomView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
  super(context, attrs, defStyleAttr, defStyleRes);

  // initialize lots of static members here
}

并通过委托给这个实现其他构造函数:

e.g。

 MyCustomView(Context context, AttributeSet attrs, int defStyleAttr) {
   this(context, attrs, defStyleAttr, 0);
 }

这个问题是在非L设备上会失败,因为没有四个参数的超级构造函数不存在。

所以,我目前的解决方法是实现三个和四个参数构造函数(主要是复制和粘贴)并使用它。

有人看到更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:1)

创建一个这样的方法:

private void init(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    // ...
}

然后让每个构造函数使用所需的参数调用init()方法。