Android 布局组元素

rm *_*-rf 1 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/>
Run Code Online (Sandbox Code Playgroud)

我给出了这 3 个部分,并试图设置每个部分的可见性。但是如果我尝试设置第 1 部分的可见性,我需要单独设置每个元素(LinearLayout、ViewPager、View)。有没有办法可以对每个部分进行分组,这样我只需要设置一次可见性就可以禁用整个部分?

提前致谢

Che*_*amp 8

如果顶层布局是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" />
Run Code Online (Sandbox Code Playgroud)

如果顶级布局不是,ConstraintLayout那么您有几个选择。

  1. 单独设置每个部分成员的可见性(试图避免这种情况,但这是一个选项)。您可以设置自己的内部组引用以使其更容易。

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

-- 第 1 节 --
FrameLayout
  LinearLayout
    ImageView
    TextView
  /LinearLayout
  ViewPager
  View

-- 第 2 节 --
FrameLayout
  LinearLayout
   ImageView
   TextView
  /LinearLayout
  ViewPager
  View

-- 第 3 节 --
FrameLayout
  LinearLayout
   ImageView
   TextView
  /LinearLayout
  ViewPager
  View

当然,ViewGroup可能是LinearLayoutRelativeLayout等等-无论是有道理的。FrameLayout用作示例。e