如何隐藏coordinatorlayout的一些视图

cclgggtu  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(317)

我有一个布局,里面包含很多视图,假设层次结构是:
协调布局
嵌套滚动视图
约束青年
约束青年
一些观点
视图(分隔符)
约束青年
一些观点
视图(分隔符)

包括appbar
mycustomprogressbar
密切协调布局
问题是我创造了一个 Groupconstraint_referenced_ids 我想隐藏的id(它们在层次结构树中,但当我试图隐藏它们并显示另一个它们不隐藏时,我仍然可以看到它们)。
我的想法是,我希望这个布局像现在一样,但添加一个progressbar,例如,当它加载时,它只显示progressbar
我做一个api调用
进度条可见我从api得到响应隐藏进度条使组可见并填充其中的值
我试着将它们添加到 CoordinatorLayout 详情如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/myRoot"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

   <ConstraintLayout>...</ConstraintLayout>

    <include
        android:id="@+id/app_bar"
        layout="@layout/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

    <MyCustomProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:id="@+id/my_custom_progress_bar"/>

    <androidx.constraintlayout.widget.Group
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:constraint_referenced_ids="lot_of_ids"
        android:id="@+id/myGroup"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

但我不能让它工作,我错过了什么?
总的来说,我们的想法是能够继续使用原来的大布局,但只需添加一些视图,例如 ProgressBar 也是一个 EmptyCustomView 为了在不重叠信息的情况下显示它们,只显示确切的视图,我已经做了很多次了,但不是在 CoordinatorLayout ,就像用“状态”分隔一样,当状态为加载时,只显示进度条;当状态为空时,显示emptycustomview;当状态为成功时,从一开始就按原样显示布局,但隐藏其他布局。

6jjcrrmo

6jjcrrmo1#

我不完全理解你的问题。然而,我推断您正在试图隐藏一些视图,并且通过编程很容易做到这一点。
步骤1:提供视图以在xml声明中隐藏id。假设它是一个文本视图。

<TextView
    android:id="@+id/view_to_hide"
    .../>

步骤2:在java文件中声明视图。

TextView toHide = (TextView) findViewById(R.id.view_to_hide);

步骤3:在需要的地方,通过调用 setVisibility 方法。

toHide.setVisibility(View.VISIBLE); //for visible
toHide.setVisibility(View.INVISIBLE); //for invisible

还有其他值,例如 View.GONE ; 然而,我发现 VISIBLEINVISIBLE 足以满足我的所有目的。
还请注意,此方法适用于扩展 View 类(例如,可以在偶数 LinearLayout (等等)。在背景上 View.INVISIBLE ,视图无法获得焦点,无法单击。我希望这个答案有帮助。

相关问题