我有以下布局:
<!-- 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)分别设置。有没有一种方法可以对每个部分进行分组,所以我只需要设置一次可见性即可禁用整个部分?
预先感谢
答案 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
,则有两个选择。
分别设置每个部分成员的可见性(尝试避免这种情况,但这是一个选择)。您可以设置自己的内部组引用来简化此操作。
将每个部分包装在另一个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
可以是LinearLayout
,RelativeLayout
等-有意义的任何东西。 FrameLayout
用作示例
答案 1 :(得分:0)
只需在父布局上调用setVisibility()即可,该布局包含要隐藏在主活动中的视图;
,其中setVisibility中的VISIBILITY FLAGS将确定视图的Visibility, 有3个标志
在您的情况下,假设第1部分的ID为layout_one,则为线性布局
代码应类似于:
LinearLayout layoutOne= (LinearLayout) findViewById(R.id.layout_one);
layoutOne.setVisibility(View.INVISIBLE);