2010-05-20 22 views
7

Sto utilizzando una casella di controllo nel mio codice che quando è selezionata fa una vista testuale e una editText visibles, ma se deseleziono la casella di controllo continuano ad essere visibili invece di scomparire.Problema di visibilità Android con casella di controllo

Ecco il codice:

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); 

       } 
      } 
     }); 

e parte del xml che si trova all'interno di un layout per Relativa:

<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> 

Cosa devo fare per rendere lo scomparire textView e EditText quando ho deselezionare la casella di controllo?

Grazie!

+0

Sono d'accordo con Roflcoptr ma di recente ho avuto modo di sperimentare con alcuni correlato problemi e ha scoperto che se hai fatto (per qualche motivo pazzo) vuoi usare valori interi non sono 0 e 1 ma piuttosto è: 0 - visibile 4 - invisibile 8 - andato Non sono sicuro perché questi sono multipli di 4. –

risposta

14

Uso View.VISIBLE, View.INVISIBLE, View.GONE per controllare la visibilità (invece di 0 & 1).

+0

Grazie ! Fa il trucco! – fxi

6

due cose:

  1. Si dovrebbe usare setOnCheckedChangeListener(), che renderà la vita più facile.

  2. È necessario utilizzare View.GONE e View.VISIBLE anziché interi per setVisibility().

+0

grazie per la risposta! – fxi

2

il problema è in questa parte:

// 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 non dovrebbero utilizzare valori interi, ma invece utilizzare le costanti forniti dalla classe vista

// Esegui azione sui clic, a seconda che si tratti di società controllata if (((checkbox) v) .isChecked()) {

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

      } else { 

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

      } 

invece di invisibile potresti anche usare GONE. allora il vostro TextEdit invisibile non ha bisogno di spazio nel layout

se si seleziona la API vedrete che 1 non è un parametro valido:

+0

per la tua risposta! – fxi

Problemi correlati