设定父母对子女的可见性的影响

这个问题来自于必须dynamic地显示/隐藏不同的视图。 视图有3个可见性设置 – 可见,不可见,并且不见了。 如果你有一个父视图,例如一个LinearLayout ,它有几个子视图(无所谓),那么设置父视图的可见性就像在所有子视图上独立地设置可见视图一样。 例如,如果我说

 LinearLaout container = (LinearLayout) findViewById(R.id.layout_1); container.setVisiblity(View.GONE); 

这与查找每个单独的子视图并将所有这些视图设置为View.GONE吗? 如果父母不是View.GONE而是View.INVISIBLE呢? 所有的孩子仍然画画,但没有看到?

Solutions Collecting From Web of "设定父母对子女的可见性的影响"

效果是一样的,但实际上并没有设置所有孩子的知名度。 它不会吸引他们。

例如:

  1. 设置孩子去(父母是可见的,孩子不见了)

  2. 将父母设置为“离开”(均已离开)

  3. 将父项设置为可见(父可见,小孩仍然离开,因为之前显式设置了小孩)

  4. 将孩子设置为可见(都可见)

任何时候视图都是不可见的,它不会画出它或它的孩子。 如果它已经结束,它也不会为它们保留任何布局空间。 如果你检查孩子的getVisibility() ,你会发现它仍然被设置为以前的样子,即使它没有被绘制。

使用下面的recursion函数使您的子视图可见消失
第一个参数是你的父视图,第二个参数决定你是否希望父视图的子视图可见或消失。 真=可见假=走了

 private void layoutElemanlarininGorunumunuDegistir(View view, boolean gorunur_mu_olsun) { ViewGroup view_group; try { view_group = (ViewGroup) view; Sabitler.konsolaYazdir(TAG, "View ViewGroup imiş!" + view.getId()); } catch (ClassCastException e) { Sabitler.konsolaYazdir(TAG, "View ViewGroup değilmiş!" + view.getId()); return; } int view_eleman_sayisi = view_group.getChildCount(); for (int i = 0; i < view_eleman_sayisi; i++) { View view_group_eleman = view_group.getChildAt(i); if (gorunur_mu_olsun) { view_group_eleman.setVisibility(View.VISIBLE); } else { view_group_eleman.setVisibility(View.GONE); } layoutElemanlarininGorunumunuDegistir(view_group_eleman, gorunur_mu_olsun); } } 

是的,你是正确的所有要点:)

将布局可见性设置为通过将隐藏所有的孩子。 将布局可见性设置为INVISIBLE将使所有儿童看不见,但仍然绘制并占据空间。