2012-07-12 16 views
5

Estoy usando PopUpwindow con textviews en él. El problema es cuando hago clic en cualquiera de los textos, el color de fondo no cambia aunque está cambiando cuando la vista de texto está enfocada pero no al hacer clic.textview color de fondo no cambia al hacer clic en popupwindow

Después de hacer clic estoy desestimando la popupWindow, y si yo no descarto la popupWindow entonces los cambios de color de fondo de acuerdo con el selector:

Ésta es mi fondo de Vista de Texto de selección:

<item android:state_focused="true" android:drawable="@drawable/focused" />  
<item android:state_pressed="true" android:drawable="@drawable/pressed" /> 
<item android:drawable="@drawable/priornone" /> <!-- default --> </selector> 

en mi popupWindow todo lo que hago es la siguiente:

TextView manage_list = (TextView)popupView.findViewById(R.id.manage_lists); 
manage_list.setOnClickListener(new View.OnClickListener(){ 

public void onClick(View v) 
{ 

    Intent myIntent = new Intent(v.getContext(),ManageList.class); 
     popupWindow.dismiss(); 
    startActivity(myIntent); 

}}); 

archivo de diseño para popupWindow:

<?xml version="1.0" encoding="utf-8"?> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
    android:background="@drawable/pop_menu_bg" 
android:orientation="vertical" 
    > 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/manage_lists" 
    android:text="Manage lists" 
    android:background="@drawable/my_drawable" 
> 
</TextView> 


</LinearLayout> 

Su comportamiento bastante extraño todo funciona bien si no dejo de lado la ventana emergente pero si dejo de lado la ventana emergente al hacer clic en el fondo de la vista de texto no cambia.

¿Qué estoy haciendo mal? Cualquier ayuda será apreciada.

Respuesta

0

Creo que si se utiliza el código anterior, te irá bien:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_focused="true" android:drawable="@drawable/focused" /> 
<item android:state_pressed="true" android:drawable="@drawable/activated" /> 
<item android:drawable="@drawable/priornone" /> 
</selector> 

no se pueden definir dos estados diferentes de un elemento.

Espero que ayude.

+0

gracias por la sugerencia, pero no ayudó, aún el fondo de la vista de texto no cambia al hacer clic. – kay

+0

@kay ¿Puedes publicar tu archivo xml de diseño? Creo que este código y el código de los demás que respondieron a su pregunta son correctos, por lo que el problema puede ser otro. – Angelo

+0

publiqué el archivo de diseño. – kay

0

// necesita eliminar android:state_pressed="true" cuando android:state_focused="true" también es cierto.

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:drawable="@drawable/button_pressed" /> <!-- pressed --> 
    <item android:state_focused="true" 
      android:drawable="@drawable/button_focused" /> <!-- focused --> 
    <item android:state_hovered="true" 
      android:drawable="@drawable/button_focused" /> <!-- hovered --> 
    <item android:drawable="@drawable/button_normal" /> <!-- default --> 
</selector> 

refer here:

EDIT: que necesita para darle a su atributo LinearLayout como android:clickable="false"

+0

intenté su sugerencia, pero no ayudó, aunque gracias. – kay

+0

@kay Tengo tu problema. ver mi respuesta editada. –

+0

eso tampoco funcionó padma. Lo que sucede después de hacer clic es que este fondo de textview se vuelve transparente y la ventana emergente se cierra. – kay

0

Usted usará su TextView como Casilla, ¿verdad?

Utilice una bandera booleana para intentar esto.

private boolean clicked = false; 

// ... 

mytextView.setOnClickListener(new OnClickListener(){ 
    @Override 
    public void onClick(View v){ 
     clicked = !clicked; 

     if(clicked){ 
      mytextView.setBackgroundColor(yourcolorclicked); 
     }else{ 
      mytextView.setBackgroundColor(yourcolorunclicked); 
     } 
     mytextView.invalidate(); 
    } 
}); 
+0

probé su sugerencia, pero no ayudó, aunque gracias. – kay

0

Compruebe si tiene un conflicto de nombres. En caso de que ninguno de sus cambios se muestre, la posibilidad de que no funcione debido a algún tipo de problema de nomenclatura que esté en conflicto con una biblioteca importada podría ser su principal problema.

Cuestiones relacionadas