2015-08-29 51 views
2

我想用setVisibility(View.GONE)隱藏RelativeLayout。但它不起作用。請檢查我的代碼:如何隱藏相對佈局及其全部是小孩?

<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集中在一個命令中。有沒有其他方法?

+0

這應該工作,你的代碼改變知名度別的地方? –

回答

1

您可以創建方法來動態更改佈局tv的可見性。 將佈局設置爲啓動時所需的可見性。

我在這裏包含了檢查,因爲它是其他代碼的一部分,如果您想要在可見性中包含布爾檢查,可能會證明有用。

在您的活動主體中聲明您的視圖,因此可以通過任何方法訪問它。

活動:

RelativeLayout tv; 

的onCreate:

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

使用這些方法來控制可見。

不中創建:

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

使用GONE如果你不想被一種無形的元素流離失所的其他元素。你可以在大多數情況下使用這個原則。

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

3

您的代碼必須工作,但嘗試設置佈局可視性XML屬性

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

我想根據條件改變可視性。在XML中更改可見性將會限制我。不是嗎? –

+0

plese,提供更多的代碼,將會更好,如果你提供全班 –

+0

@HankMoody該操作需要一個動態的解決方案。 –

3

好了,所以就默認行爲而言,setVisibility適用於所有子視圖以及。

嘗試在RelativeLayout的標籤內的XML使用

android:visibility="gone" 

。如果視圖仍然顯示出來,那麼代碼中的某處會更改該視圖。發佈完整的代碼,或許我們可以提供幫助。