2016-07-07 200 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),並且這種行爲對於屬性來說相當混亂。