Android:隐形和消失的区别?
Posted
技术标签:
【中文标题】Android:隐形和消失的区别?【英文标题】:Android : difference between invisible and gone? 【发布时间】:2012-07-18 09:18:24 【问题描述】:查看可见性状态的invisible
和gone
有什么区别?
【问题讨论】:
当视图消失时,意味着它不会占用布局中的任何空间。当它不可见时,它会在布局中占据必要的空间,但您只是看不到它。 【参考方案1】:隐形:
这个视图是不可见的,但它仍然占用空间用于布局。
走了:
这个视图是不可见的,它不占用任何布局空间。
【讨论】:
看起来类似于 html/CSS 中的display:none
和 visibility: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.VISIBLE
或 View.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:隐形和消失的区别?的主要内容,如果未能解决你的问题,请参考以下文章