【问题标题】:Android Layout group elementsAndroid 布局组元素
【发布时间】:2023-03-10 01:30:02
【问题描述】:

我有以下布局:

<!-- 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)分开设置。有没有办法可以对每个部分进行分组,这样我只需要设置一次可见性,整个部分就会被禁用?

提前致谢

【问题讨论】:

  • 根据您的选择将每个部分的每个布局放在单个视图组(LinearLayout、Relative Layout、FrameLayout)中
  • 您可以将每个部分放入容器 ViewGroup 并使用它的可见性进行操作。
  • 不用,您只需拨打LinearLayout#setVisibility()即可
  • @pskink 不,如果我只设置我的 LinearLayout 的可见性,我仍然会显示 ViewPager 和 View
  • @Parul 我在我的 AndroidStudio 中找不到 ViewGroup。我需要先在某个地方下载它还是您可以提供一个xml示例?

标签: android android-layout


【解决方案1】:

如果顶层布局为ConstraintLayout,则可以将每个section的所有view放到一个组中。设置组的可见性会更改其所有成员的可见性。见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 节 --
框架布局
线性布局
图像视图
文本视图
/线性布局
ViewPager
查看

-- 第 2 节 --
框架布局
线性布局
图像视图
文本视图
/线性布局
ViewPager
查看

-- 第三节 --
框架布局
线性布局
图像视图
文本视图
/线性布局
ViewPager
查看

当然,ViewGroup 可以是 LinearLayoutRelativeLayout 等 - 任何有意义的。以FrameLayout 为例.e

【讨论】:

  • 感谢回答,我发现对我来说是android.constraintlayout.widget.group,其余的都在工作
【解决方案2】:

只需在包含要隐藏在主活动中的视图的父布局上调用 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2016-09-05
    • 1970-01-01
    • 2018-08-21
    相关资源
    最近更新 更多