隐藏视图默认构造函数

Hei*_*sch 2 android kotlin

在Kotlin中有一种方法可以隐藏(放置在其他地方)视图的默认构造函数吗?也许创建一个子视图或扩展或类似的东西.

目前我的所有观点都是这样的,这有点冗长:

class MyView(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int): View(context, attrs, defStyleAttr, defStyleRes) {
    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int): this(context, attrs, defStyleAttr, 0)
    constructor(context: Context, attrs: AttributeSet?): this(context, attrs, 0, 0)
    constructor(context: Context): this(context, null, 0)
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*lov 6

您可以使用默认参数:

class MyView(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0): View(context, attrs, defStyleAttr, defStyleRes)
Run Code Online (Sandbox Code Playgroud)

如果你需要调用从Java这些构造,可以考虑申请@JvmOverloads注释的构造器:

class MyView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0): View(context, attrs, defStyleAttr, defStyleRes)
Run Code Online (Sandbox Code Playgroud)