在android中,如果我从其父视图中移除视图,而在父视图中隐藏子视图(GONE不可见).我知道隐藏的视图仍将保留在内存中,但说到父视图的物理外观会有所不同吗?如果答案没有不同,那是否意味着当我隐藏子视图时,子视图的整个布局在父视图中基本上不存在?

解决方法:

《先去了》看不见的是两件事.

当您使用GONE更改可见性时

This view is invisible, and it doesn’t take any space for layout purposes.

但是另一方面,当您使用INVISIBLE更改可见性时

This view is invisible, but it still takes up space for layout purposes.

所以真正的问题是REMOVE vs GONE

去掉

删除视图时,它将从布局的层次结构中删除.这意味着它不再是其父级的子级.因此,该视图现在可以在任何其他ViewGroup中使用.

去了

当您将可见性更改为GONE时,它变为不可见,并删除了分配的空间,但是它仍然是其父级的子级.因此,它不能在任何其他ViewGroup中使用,因为一个孩子只能有一个父母.

何时使用删除

对我来说,如果要将视图移动到另一个ViewGroup,或者要永久隐藏它,则必须删除该视图.

何时使用GONE

当您要切换可见性时,请在父视图中切换可见性以及为其分配的空间.将可见性设置为GONE后,用户无法区分是否首先存在一个View.

何时使用隐形

与GONE类似,当您想要切换可见性,但又不想在父视图中删除为其分配的空间时.因此,UI看起来就像是被隐藏了.

标签:android

来源: https://codeday.me/bug/20191119/2034911.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐