如何隐藏相对布局及其所有孩子?

时间:2015-08-29 21:30:11

标签: 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>

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

private RelativeLayout tv;
tv = (RelativeLayout) findViewById(R.id.AccelerometerView);
tv.setVisibility(View.GONE);

我的方法是否正确?我知道我们可以单独隐藏TextView这样的内容。但我想在一个命令中集中隐藏所有三个TextViewImageView。还有其他办法吗?

3 个答案:

答案 0 :(得分:4)

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

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

在您的活动正文中声明您的观点,因此可以通过任何方法访问它。

的活动:

RelativeLayout tv;

OnCreate中:

tv = (RelativeLayout) findViewById(R.id.AccelerometerView);

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

不在create:

public void setLayoutInvisible() {
    if (tv.getVisibility() == View.VISIBLE) {
        tv.setVisibility(View.GONE);
    }
}
public void setLayoutVisible() {
    if (tv.getVisibility() == View.GONE) {
        tv.setVisibility(View.VISIBLE);
    }
}

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

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

答案 1 :(得分:3)

您的代码必须正常工作,但尝试从xml属性设置布局可见性

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

答案 2 :(得分:3)

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

尝试使用

android:visibility="gone"
在RelativeLayout标记内的xml中。如果视图仍然显示,那么代码中的某个地方就会被更改。发布完整的代码,以便我们可以提供帮助。