Android:隐形和消失的区别?

Posted

技术标签:

【中文标题】Android:隐形和消失的区别?【英文标题】:Android : difference between invisible and gone? 【发布时间】:2012-07-18 09:18:24 【问题描述】:

查看可见性状态的invisiblegone 有什么区别?

【问题讨论】:

当视图消失时,意味着它不会占用布局中的任何空间。当它不可见时,它会在布局中占据必要的空间,但您只是看不到它。 【参考方案1】:

隐形:

这个视图是不可见的,但它仍然占用空间用于布局。

走了:

这个视图是不可见的,它不占用任何布局空间。

【讨论】:

看起来类似于 html/CSS 中的 display:nonevisibility:hidden :-) 或在 Wpf XAML 中隐藏和折叠 如果不可见,点击会不会也被禁用? @KuldeepYadav 是的,它会消失不见。 仅供未来好奇的读者参考:我们仍然可以在列表/网格视图上使用 performItemClick,即使它是不可见的。【参考方案2】:

来自Documentation你可以这么说

View.GONE 这个视图是不可见的,它不占用任何空间 布局目的。

View.INVISIBLE这个视图是不可见的,但它仍然占用空间用于布局。


让我们用一些图片来阐明这个想法。

假设您有三个按钮,如下所示

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

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

希望这能消除您的疑虑。

【讨论】:

这个想法需要清除吗?仅从解释对我来说似乎已经足够清楚了。 @JanDvorak :) 太好了!你的问题我没有答案。如果您认为这对所有用户来说都非常清楚,那么接受的答案应该是评论并具有文档站点的链接。我说的对吗? 如果我将它用于编辑文本会怎样。是否可以从 edittext 获取值? 你的答案比接受的答案更好。 图片胜于雄辩【参考方案3】:

对于 ListView 或 GridView 有另一个区别,当可见性最初设置为时

隐形:

调用适配器的getView()函数

走了:

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

【讨论】:

【参考方案4】:

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

GONE:不必绘制视图。

【讨论】:

视图未绘制,已测量和布局。 @cyroxis 也许他/她的意思是 ondraw 方法!【参考方案5】:

我想补充一下正确和成功的答案,如果您初始化一个可见性为View.GONE 的视图,则该视图可能尚未初始化,您会遇到一些随机错误。

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

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

【讨论】:

是的,你是对的,它只在视图为GONE时才有效【参考方案6】:

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

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

例如 Button _mButton = new Button(this);

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

因此与可见性 = 不可见相比,它会花费更多时间。

【讨论】:

【参考方案7】:

View.INVISIBLE->View 是不可见的,但会占用布局中的一些空间

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

【讨论】:

【参考方案8】:

View.GONE = 视图不会显示,其余视图不会考虑其存在

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

【讨论】:

以上是关于Android:隐形和消失的区别?的主要内容,如果未能解决你的问题,请参考以下文章

适用于某些智能手机的 Google Play 隐形应用

Android中Popupwindow和Dialog的区别

Android中Popupwindow和Dialog的区别

Android中Popupwindow和Dialog的区别

android 怎么让通知栏点击后不消失 但可以被按钮清除

Android开发问题怎么解决?