Android:隐形和消失之间的区别?

时间:2012-07-19 08:14:19

标签: android android-xml xml-attribute

视图可见性状态invisiblegone之间有什么区别?

8 个答案:

答案 0 :(得分:652)

不可见:

  

此视图不可见,但仍会占用布局空间。

GONE:

  

此视图不可见,并且不需要任何空间用于布局。

答案 1 :(得分:243)

Documentation你可以说

  

View.GONE 此视图不可见,并且不占用任何空间   布局目的。

     

View.INVISIBLE 此视图不可见,但仍会占用空间用于布局。


让我们用一些图片来清除这个想法。

假设你有三个按钮,如下面

enter image description here

现在,如果您将Button Two的可见性设置为不可见(View.INVISIBLE),那么输出将

enter image description here

当您将按钮2的可见性设置为已消失(View.GONE)时,输出将为

enter image description here

希望这会清除你的怀疑。

答案 2 :(得分:29)

对于ListView或GridView,当可见性最初设置为

时,还有另一个区别

不可见:

  

适配器的getView()函数名为

GONE:

  

适配器的getView()函数没有调用,因此在不需要时阻止视图加载

答案 3 :(得分:9)

不可见:
必须绘制视图,需要时间。

GONE:
不必绘制视图。

答案 4 :(得分:4)

我想添加正确且成功的答案,如果您将可见性初始化为View.GONE,则视图可能未初始化,您将收到一些随机错误。

例如,如果您将布局初始化为View.GONE,然后尝试启动动画,根据我的经验,我的动画会随机运行。有时是,有时没有。

因此,在处理(调整大小,移动等)视图之前,您必须将其初始化为View.VISIBLEView.INVISIBLE以在屏幕中呈现它(绘制它),然后处理它。 / p>

答案 5 :(得分:3)

  • View.INVISIBLE - >视图不可见,但会在布局中占用一些空间

  • View.GONE - >视图不可见,并且不会占用布局中的任何空间

答案 6 :(得分:2)

当你编写它时,每次编译程序时,组件都会被初始化,这意味着你要从布局中删除组件,当你使组件不可见时,它将在布局中占用相同的空间,但每次你不需要初始化它。

如果你设置Visibility = Gone,那么你必须初始化component..like

例如Button _mButton = new Button(this);

_mButton =(Button)findViewByid(R.id.mButton);

因此与Visibility = invisible相比需要更多时间。

答案 7 :(得分:0)

View.GONE =该视图将不会显示,其余视图将不被考虑

View.INVISIBLE =该视图不会显示,但会在布局中占用其分配的空间