2013-06-25 75 views
1

我在eclipse中開發一個Android應用程序。如何一次隱藏Android中佈局中的所有元素?

我有一個XML,其中有2個線性佈局彼此相鄰。左邊有幾個按鈕,可以讓內容在右側顯示。但是,我不僅會喜歡這些按鈕來使特定內容可見,而且會隱藏(setVisibility.GONE)該佈局中的所有其他內容。我已經嘗試過removeAllViews,但這不適合我,因爲它會刪除它們。所以我的想法是隱藏(設置可見性消失)每一個東西,然後做我希望可見的。我問這個問題的原因是,設置所有12個按鈕的所有內容(實際上爲24)的可見性需要很長的時間。

在此先感謝

佈局代碼:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/alap" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ScrollView 
     android:id="@+id/scrollView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/imageView3" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/imageView4" > 

     <LinearLayout 
      android:layout_width="197dp" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 

      <ImageView 
       android:id="@+id/imageView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/lewis" /> 

      <Button 
       android:id="@+id/first" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/first" /> 

      <Button 
       android:id="@+id/second" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/second" /> 

     </LinearLayout> 
    </ScrollView> 

    <ImageView 
     android:id="@+id/imageView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:scaleType="center" 
     android:src="@drawable/cpr1" /> 

    <ImageView 
     android:id="@+id/imageView4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:scaleType="center" 
     android:src="@drawable/epizodok" /> 

    <LinearLayout 
     android:id="@+id/def" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/imageView3" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@+id/scrollView2" 
     android:layout_toRightOf="@+id/scrollView2" 
     android:orientation="vertical" 
     android:visibility="visible" > 

     <ImageView 
      android:id="@+id/image1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/lewis" 
      android:visibility="gone" /> 

     <ImageView 
      android:id="@+id/image2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_launcher" 
      android:visibility="gone" /> 

    </LinearLayout> 

</RelativeLayout> 
+0

分享您的佈局代碼... –

+0

從'@ + ID/def'活動讀取的LinearLayout ID,然後設置此佈局的可見性。這將顯示/隱藏此佈局的所有視圖。 –

+0

你能把它變成我的代碼嗎?該ID是「def」。它不會隱藏佈局嗎? – BarniPro

回答

4

簡單地說,只需在「def」線性佈局中採用垂直佈局的另一種線性佈局即可。根據需要更改其可見性。

<LinearLayout 
     android:id="@+id/def" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/imageView3" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@+id/scrollView2" 
     android:layout_toRightOf="@+id/scrollView2" 
     android:orientation="vertical" 
     android:visibility="visible" > 
    <LinearLayout 
     android:id="@+id/Subdef" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 
     <ImageView 
      android:id="@+id/image1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/lewis" 
      android:visibility="gone" /> 

     <ImageView 
      android:id="@+id/image2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_launcher" 
      android:visibility="gone" /> 
</LinearLayout> 
    </LinearLayout> 
5

沒有必要隱瞞的觀點而不是隻是用ViewFlipper概念。 只是聲明視圖腳蹼在XML文件中有你的兩個linearlayouts這樣

<Viewflipper android:id="@+id/myViewFlipper" android:layout_height="wrap_content" android:layout_width="match_parent"> 
    <LinearLayout android:id="@+id/layout1" android:layout_height="wrap_content" android:layout_width="match_parent"></LinearLayout> 
    <LinearLayout android:id="@+id/layout2" android:layout_height="wrap_content" android:layout_width="match_parent"></LinearLayout> 
    </Viewflipper> 

並獲得viewflipper參考在這樣

Viewflipper mFlipper = (Viewflipper)findViewById(R.id.myViewFlipper); 

使用mFlipper.showNext()Java代碼,使用mFlipper.showPrevious ()方法來隱藏和顯示你的佈局就是這樣。

+0

感謝您的回答,唯一的問題我原來是用戶可能不希望去下一個。我使用了sublayouts – BarniPro

6

請試試這個...

<LinearLayout 
     android:id="+id/ll" 
     android:layout_width="197dp" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <!-- All content which you hide/show put here --> 

</LinearLayout> 

現在在類文件你讀到這篇文章。

LinearLayout ll = (LinearLayout) findViewById(R.id.ll); 

之後,根據您的要求,您可以隱藏/顯示此佈局及其所有內容。

like: For Hide。

ll.setVisibility(View.GONE); 

For Show。

ll.setVisibility(View.VISIBLE); 

當您隱藏/顯示LinearLayout時,此Layout的所有內容也會自動隱藏/顯示。