setVisibility()和setAlpha()的区别

7
“setVisibility(View.GONE)”和“setAlpha(0f)”有什么区别?
6个回答

11

setVisibility(View.GONE) 不仅会隐藏您的视图,而且还会回收该视图占用的空间。然而 setAlpha(0f) 相当于 setVisibility(View.INVISIBLE),仅隐藏视图并仍占用布局中的空间。


4
请注意,setAlpha() 方法是针对 API Level 11 及以上版本的新功能,旨在与硬件加速配合使用。 - CommonsWare
8
同时:您无法与(即触摸)不可见的视图进行交互,但您可以触摸透明的视图。 - laalto
1
我知道这很老,但是在使用ViewPropertyAnimator时,setVisibility(View.INVISIBLE)不等同于setAlpha(0f)。(我认为这是一个错误)。 - Cookster
似乎setVisibility(View.INVISIBLE)和setAlpha(0)不同,因为将视图设置为不可见时,然后将alpha属性动画化为1不会显示该视图。 - azizbekian
1
setVisibility()和setAlpha()是不同的。例如:visibility = INVISIBLE和alpha = 0 -> 视图不可见,visibility = INVISIBLE和alpha =1 -> 视图不可见,visibility = VISIBLE和alpha =0 -> 视图透明(不可见),visibility = VISIBLE和alpha = 1 -> 视图可见。 - vovahost

4

3

我认为定义下面3种不同情况之间的区别是有价值的。

注意,setVisibility(View.INVISIBLE)setAlpha(0f)也是不同的。

setVisibility(View.GONE)

隐藏视图并移除视图占用的空间。失效绑定到视图的OnClickListener

setVisibility(View.INVISIBLE)

隐藏视图但保留视图占用的空间。失效绑定到视图的OnClickListener -> 如果点击了占用的空间,则不会触发事件

setAlpha(0f)

隐藏视图但保留视图占用的空间。保持绑定到视图的OnClickListener处于活动状态 -> 如果点击了占用的空间,则会触发事件


1
如果您需要将它们移除并重新显示,最好只是将可见性设置为gone,然后再改回visible。setAlpha(0f)相当于setVisibility(View.INVISIBLE),只会隐藏视图。

1

setVisibility(View.GONE) 使得你的视图不可见且不占用空间(与 View.INVISIBLE 不同)。

setAlpha(0f) 使得你的视图变为透明,但该视图仍占用空间并可以接收一些事件,如点击事件。


0

setAlpha() - 设置视图的不透明度。这是一个从0到1的值,其中0表示视图完全透明,1表示视图完全不透明,如(0)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接