查看可见性状态的 invisible
和 gone
有什么区别?
无形的:
这个视图是不可见的,但它仍然占用空间用于布局。
消失:
此视图是不可见的,并且它不占用任何空间用于布局目的。
从 Documentation 你可以说
View.GONE 这个视图是不可见的,它不占用任何空间用于布局。 View.INVISIBLE 这个视图是不可见的,但它仍然占用空间用于布局。
让我们用一些图片来澄清这个想法。
假设您有三个按钮,如下所示
https://i.stack.imgur.com/pScps.png
现在,如果您将按钮 2 的可见性设置为不可见 (View.INVISIBLE
),那么输出将是
https://i.stack.imgur.com/JYOkP.png
当您将按钮二的可见性设置为消失 (View.GONE
) 时,输出将是
https://i.stack.imgur.com/iM8zc.png
希望这能消除您的疑虑。
对于 ListView 或 GridView 有另一个区别,当可见性最初设置为
无形的:
适配器的 getView() 函数调用
消失:
适配器的 getView() 函数没有调用,因此阻止了视图在不必要时加载
INVISIBLE:必须绘制视图并且需要时间。
GONE:不必绘制视图。
我想补充一下正确且成功的答案,如果您初始化一个可见性为 View.GONE
的视图,则该视图可能尚未初始化,您会收到一些随机错误。
例如,如果您将布局初始化为 View.GONE
,然后尝试启动动画,根据我的经验,我的动画会随机运行。有时是,有时不是。
因此,在处理(调整大小、移动等)视图之前,您必须将其初始化为 View.VISIBLE
或 View.INVISIBLE
以在屏幕上呈现(绘制)它,然后对其进行处理。
GONE
时才有效
当你让它消失时,每次编译程序时,组件都会被初始化,这意味着你正在从布局中删除组件,当你使它不可见时,它会在布局中占用相同的空间,但每次你不需要初始化它.
如果你设置 Visibility=Gone 那么你必须初始化组件..like
例如 Button _mButton = new Button(this);
_mButton = (Button)findViewByid(R.id.mButton);
因此与可见性 = 不可见相比,它需要更多时间。
View.INVISIBLE->View 是不可见的,但是在布局中会占用一些空间
View.GONE->视图不可见,不会占用布局空间
View.GONE = 该视图将不显示,其余视图将不考虑其存在
View.INVISIBLE = 视图不会显示,但会占用布局中分配的空间
不定期副业成功案例分享
display:none
&visibility:hidden
在 HTML/CSS 中 :-)