2010-05-20 17 views
7

Estoy usando una casilla de verificación en mi código que cuando se marca hace una vista de texto y un texto visible, pero si desmarco la casilla de verificación continúan siendo visibles en lugar de desaparecer.Problema de visibilidad de Android con la casilla de verificación

Aquí está el código:

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

       } 
      } 
     }); 

Y parte del xml que está dentro de una disposición 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> 

¿Qué debo hacer para que el desaparecer Textview y EditarTexto cuando desactive la ¿caja?

¡Gracias!

+0

Estoy de acuerdo con Roflcoptr pero recientemente he estado experimentando con algunos relacionados problemas y descubrió que si lo hizo (por algún motivo loco) desea utilizar valores enteros, no son 0 y 1, sino que es: 0 - visible 4 - invisible 8 - ido No estoy seguro de por qué estos son múltiplos de 4. –

Respuesta

14

Utilice View.VISIBLE, View.INVISIBLE, View.GONE para controlar la visibilidad (en lugar de 0 & 1).

+0

Gracias ! ¡Haz el truco! – fxi

6

dos cosas:

  1. Debe utilizar setOnCheckedChangeListener(), lo que hará su vida más fácil.

  2. Debe usar View.GONE y View.VISIBLE en lugar de enteros para setVisibility().

+0

¡gracias por tu respuesta! – fxi

2

el problema es en esta 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 no deben usar valores enteros, pero en lugar de utilizar las constantes proporcionadas por la clase de vista

// Realizar acción en clics, dependiendo de si se ha comprobado ahora if (((casilla de verificación) v) .isChecked()) {

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

      } else { 

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

      } 

en lugar de invisible, también podría usar GONE. entonces su textedit invisibles no necesita espacio en el diseño

si marca la API verá que 1 no es un parámetro válido:

+0

¡gracias por tu respuesta! – fxi

Cuestiones relacionadas