如何隐藏相对布局及其全部子元素?

Moh*_*ees 6 android android-layout

我试图隐藏一个RelativeLayout使用setVisibility(View.GONE)。但这是行不通的。请检查我的代码:

<LinearLayout>

    <RelativeLayout
        android:id="@+id/AccelerometerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView />
        <TextView />
        <TextView />
        <ImageView />

    </RelativeLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码来更改可见性:

private RelativeLayout tv;
tv = (RelativeLayout) findViewById(R.id.AccelerometerView);
tv.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)

我的方法正确吗?我知道我们可以TextView单独隐藏这样的。但是我想在一个命令中同时隐藏所有三个TextView和全部ImageView。还有其他办法吗?

dej*_*u89 5

好的,就默认行为而言, setVisibility 也适用于所有子视图。

尝试使用

android:visibility="gone"
Run Code Online (Sandbox Code Playgroud)

在RelativeLayout 标记内的xml 中。如果视图仍然显示,则它正在代码中的某处更改。发布完整的代码,以便我们可以提供帮助。


Yve*_*omb 5

您可以创建方法来tv动态更改布局的可见性。将布局设置为启动时所需的可见性。

我在这里包括了检查,因为它是其他一些代码的一部分,如果您想对可见性进行布尔检查,可能会很有用。

在活动的主体中声明您的视图,以便可以通过任何方法进行访问。

活动:

RelativeLayout tv;
Run Code Online (Sandbox Code Playgroud)

Oncreate:

tv = (RelativeLayout) findViewById(R.id.AccelerometerView);
Run Code Online (Sandbox Code Playgroud)

使用这些方法来控制可见性。

不在创建范围内:

public void setLayoutInvisible() {
    if (tv.getVisibility() == View.VISIBLE) {
        tv.setVisibility(View.GONE);
    }
}
public void setLayoutVisible() {
    if (tv.getVisibility() == View.GONE) {
        tv.setVisibility(View.VISIBLE);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您不希望其他元素被INVISIBLE元素取代,请使用GONE。您可以在大多数情况下使用此原理。

http://developer.android.com/reference/android/view/View.html