2016-07-07 112 views
2

考虑到这一点:如果你喜欢科特林扩展功能

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.setVisibility(View.VISIBLE) 

可以简化为这这样做:

MyView.VISIBLE 

回答

5

这似乎有点奇怪的“吸气”修改状态,但您可以使用extension property

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 } 
+1

是的,你是正确的,这很奇怪。这不是一个真实的场景,只是搞乱东西。谢谢 –

2

是的,你可以写一个extension property财产,像这样一个getter:

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

用法用量:

myView.visible 

但是,请记住属性wi通常不鼓励吸气剂中的副作用(另见:Functions vs Properties),并且这种行为对于属性来说相当混乱。