从父级删除视图与隐藏它

时间:2015-12-20 08:16:50

标签: android

在android中,如果我从其父级删除视图,则隐藏父级中的子视图(GONE + Invisible)。我理解隐藏的视图仍然会在内存中,但说到父视图的外观会有什么不同吗?如果答案没有区别,这是否意味着当我隐藏它时父子视图的整个布局基本上不存在?

1 个答案:

答案 0 :(得分:3)

GONE& INVISIBLE是两个不同的东西。

使用GONE更改可见性时

  

此视图不可见,并且不会占用任何空间进行布局。

但另一方面,当您使用INVISIBLE

更改可见性时
  

此视图不可见,但仍会占用布局空间。

所以真正的问题是REMOVE vs GONE

删除

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

GONE

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

何时使用REMOVE

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

何时使用GONE

如果要切换可见性,以及在父视图中为其分配的空间。在将可见性设置为GONE后,用户无法区分是否首先存在视图。

何时使用INVISIBLE

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