2010-05-20 43 views
7

我在我的代碼中使用複選框,當它的檢查使得textview和editText可見時,但如果我取消選中de複選框,它們繼續可見而不是消失。安卓可見性問題與複選框

下面是代碼:

final CheckBox save = (CheckBox) findViewById(R.id.checkbox); 
     save.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 



       // Perform action on clicks, depending on whether it's now checked 
       if (((CheckBox) v).isChecked()) { 

        nameText.setVisibility(1); 
        editName.setVisibility(1); 

       } else { 

        nameText.setVisibility(0); 
        editName.setVisibility(0); 

       } 
      } 
     }); 

和XML的一部分,這是一個相對佈局內:

<LinearLayout android:id="@+id/linearLayout3" 
      android:orientation="horizontal" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below = "@+id/linearLayout2"> 

    <TextView android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/name" 
     android:visibility="invisible"/> 
    <EditText android:id="@+id/name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:visibility="invisible"/>  


    <CheckBox android:id="@+id/checkbox" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/save" /> 
</LinearLayout> 

我應該做的,使的TextView和EditText上dissapear當我取消了複選框?

謝謝!

+0

我同意Roflcoptr但最近我一直在與一些相關的實驗問題和發現,如果你(因爲一些瘋狂的原因)想要使用整數值,他們不是0和1,而是它:0 - 可見4 - 隱形8 - 不知道爲什麼這些是4的倍數。 – 2011-10-28 02:20:55

回答

14

使用View.VISIBLE,View.INVISIBLE,View.GONE來控制能見度(而不是0 & 1)。

+0

謝謝!它的竅門! – fxi 2010-05-20 15:40:08

6

兩件事情:

  1. 您應該使用setOnCheckedChangeListener(),這將使您的生活更輕鬆。

  2. 您應該使用View.GONE和View.VISIBLE而不是整數setVisibility()

+0

謝謝你的回答! – fxi 2010-05-23 12:31:31

2

問題是在這一部分:

// Perform action on clicks, depending on whether it's now checked 
       if (((CheckBox) v).isChecked()) { 

        nameText.setVisibility(1); 
        editName.setVisibility(1); 

       } else { 

        nameText.setVisibility(0); 
        editName.setVisibility(0); 

       } 

YOUT不應該使用整數值,而是使用由視圖類

提供的常量//上點擊執行操作,這取決於無論是現在檢查 如果(((複選框)v).isChecked()){

   nameText.setVisibility(View.VISIBLE); 
       editName.setVisibility(View.VISIBLE); 

      } else { 

       nameText.setVisibility(VIEW.INVISIBLE); 
       editName.setVisibility(VIEW.INVISIBLE); 

      } 

而不是看不見,你也可以使用GONE。那麼,如果你檢查你的API無形的TextEdit不需要在佈局

空間,你會看到一個1是不是一個有效參數:

+0

泰克你的答案! – fxi 2010-05-23 12:30:40