2

考虑到这一点:

MyView.setVisibility(View.VISIBLE)

可以简化为:

inline fun View.setVisible() = apply { visibility = View.VISIBLE }

MyView.setVisible()

或者,如果您愿意,可以这样做:

inline infix fun View.vis(vis: Int) = apply { visibility = vis }
MyView vis View.VISIBLE

无论如何通过这样做来完成同样的事情:

MyView.VISIBLE
4

2 回答 2

5

“getter”修改状态似乎有点奇怪,但您可以使用扩展属性

val View.VISIBLE: Unit
    get() {
        visibility = View.VISIBLE
    }

您还可以使其返回新的可见性值或返回自身,以便您可以潜在地链接调用。

val View.VISIBLE: Int
    get() {
        visibility = View.VISIBLE
        return visibility
    }

或者

val View.VISIBLE: View
    get() = apply { visibility = View.VISIBLE }
于 2016-07-07T15:35:47.300 回答
2

是的,您可以使用这样的 getter编写扩展属性:

val View.visible: View
    get() = apply { visibility = View.VISIBLE }

随着用法:

 myView.visible

但是,请记住,通常不鼓励在 getter 中具有副作用的属性(另请参阅:函数与属性),并且这种行为对于属性来说相当混乱。

于 2016-07-07T15:38:05.910 回答