Android布局组元素

时间:2018-10-08 08:11:42

标签: android android-layout

我有以下布局:

<!-- section 1 -->
<LinearLayout>
 <ImageView/>
 <TextView/>
</LinearLayout>
<ViewPager/>
<View/>

<!-- section 2 -->
<LinearLayout>
 <ImageView/>
 <TextView/>
</LinearLayout>
<ViewPager/>
<View/>

<!-- section 3 -->
<LinearLayout>
 <ImageView/>
 <TextView/>
</LinearLayout>
<ViewPager/>
<View/>

我给出了这3个部分,并尝试设置每个部分的可见性。但是,如果我尝试设置第1部分的可见性,则需要将每个元素(LinearLayout,ViewPager,View)分别设置。有没有一种方法可以对每个部分进行分组,所以我只需要设置一次可见性即可禁用整个部分?

预先感谢

2 个答案:

答案 0 :(得分:3)

如果顶层布局为ConstraintLayout,则可以将每个部分的所有视图放入一个组。设置组的可见性会更改其所有成员的可见性。参见Group

  

此类控制一组引用的窗口小部件的可见性。通过将小部件添加到以逗号分隔的ID列表中来对其进行引用,例如:

 <android.support.constraint.Group
          android:id="@+id/group"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:visibility="visible"
          app:constraint_referenced_ids="button4,button9" />

如果顶层布局不是ConstraintLayout,则有两个选择。

  1. 分别设置每个部分成员的可见性(尝试避免这种情况,但这是一个选择)。您可以设置自己的内部组引用来简化此操作。

  2. 将每个部分包装在另一个ViewGroup中,例如FrameLayout。设置ViewGroup父级的可见性会影响其所有子级的可见性。

  

-第1节-
  FrameLayout
  LinearLayout
  ImageView
  TextView
  / LinearLayout
  ViewPager
  查看
  
  -第2节-
  FrameLayout
  LinearLayout
  ImageView
  TextView
  / LinearLayout
  ViewPager
  查看
  
  -第3节-
  FrameLayout
  LinearLayout
  ImageView
  TextView
  / LinearLayout
  ViewPager
  查看

当然,ViewGroup可以是LinearLayoutRelativeLayout等-有意义的任何东西。 FrameLayout用作示例

答案 1 :(得分:0)

只需在父布局上调用setVisibility()即可,该布局包含要隐藏在主活动中的视图;

,其中setVisibility中的VISIBILITY FLAGS将确定视图的Visibility, 有3个标志

  1. 可见
  2. 不可见
  3. 消失

在您的情况下,假设第1部分的ID为layout_one,则为线性布局

代码应类似于:

LinearLayout layoutOne= (LinearLayout) findViewById(R.id.layout_one);
    layoutOne.setVisibility(View.INVISIBLE);