从父视图中删除视图与隐藏视图

Ahm*_*med 3 android

在android中,如果我从其父视图中删除视图与隐藏父视图中的子视图(消失+不可见)。我知道隐藏视图仍会保留在内存中,但是说到父视图的物理外观,它会有什么不同吗?如果答案没有区别,这是否意味着当我隐藏子视图时,子视图的整个布局基本上不存在于父视图中?

cap*_*wag 5

首先,GONE 和 INVISIBLE 是两个不同的东西。

当您使用 GONE 更改可见性时

该视图是不可见的,并且不占用任何布局空间。

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

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

所以真正的问题是 REMOVE 与 GONE

消除

当您删除视图时,它将从布局的层次结构中删除。这意味着它不再是其父母的孩子。所以这个视图现在可以在任何其他 ViewGroup 中使用。

消失了

当您将可见性更改为“GONE”时,它会变得不可见,并且分配的空间也会被删除,但它仍然是其父级的子级。因此,它不能在任何其他 ViewGroup 中使用,因为子视图只能有一个父视图。

何时使用删除

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

何时使用 GONE

当您想要切换可见性以及在父视图中为其分配的空间时。当visibility设置为GONE后,用户一开始就无法区分View是否存在。

何时使用隐形

与 GONE 类似,当您想要切换可见性,但又不想删除父视图中为其分配的空间时。所以用户界面看起来就像隐藏了一些东西。