视图可见性状态invisible
和gone
之间有什么区别?
答案 0 :(得分:652)
不可见:
此视图不可见,但仍会占用布局空间。
GONE:
此视图不可见,并且不需要任何空间用于布局。
答案 1 :(得分:243)
从Documentation你可以说
View.GONE 此视图不可见,并且不占用任何空间 布局目的。
View.INVISIBLE 此视图不可见,但仍会占用空间用于布局。
让我们用一些图片来清除这个想法。
假设你有三个按钮,如下面
现在,如果您将Button Two的可见性设置为不可见(View.INVISIBLE
),那么输出将
当您将按钮2的可见性设置为已消失(View.GONE
)时,输出将为
希望这会清除你的怀疑。
答案 2 :(得分:29)
对于ListView或GridView,当可见性最初设置为
时,还有另一个区别不可见:
适配器的getView()函数名为
GONE:
适配器的getView()函数没有调用,因此在不需要时阻止视图加载
答案 3 :(得分:9)
不可见:
必须绘制视图,需要时间。
GONE:
不必绘制视图。
答案 4 :(得分:4)
我想添加正确且成功的答案,如果您将可见性初始化为View.GONE
,则视图可能未初始化,您将收到一些随机错误。
例如,如果您将布局初始化为View.GONE
,然后尝试启动动画,根据我的经验,我的动画会随机运行。有时是,有时没有。
因此,在处理(调整大小,移动等)视图之前,您必须将其初始化为View.VISIBLE
或View.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 =该视图不会显示,但会在布局中占用其分配的空间