2012-07-12 24 views
5

Sto usando PopUpwindow con le visualizzazioni testuali al suo interno. Il problema è che quando clicco su uno dei textvies il colore dello sfondo non cambia, anche se cambia quando la visualizzazione testuale è focalizzata ma non sul clic.textview Il colore di sfondo non cambia al momento del clic in popupwindow

Dopo aver cliccato sto respinge il PopupWindow, e se io non respingere il PopupWindow poi i cambiamenti di colore di sfondo in base al selettore:

Questo è il mio selettore TextView sfondo:

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

in il mio PopupWindow tutto quello che sto facendo è questo:

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

}}); 

file di layout per PopupWindow:

012.

Il suo comportamento abbastanza strano funziona bene se non ignoro la finestra popup ma se ignoro la finestra popup sullo sfondo del testo, lo sfondo non cambia.

Cosa sto facendo di sbagliato? Qualsiasi aiuto sarà apprezzato.

risposta

0

Credo che se si utilizza il codice di cui sopra, sarete ok:

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

Non è possibile definire due stati diversi in un elemento.

Spero che questo aiuti.

+0

grazie per il suggerimento, ma non ha aiutato, ancora lo sfondo del testo non cambia sul clic. – kay

+0

@kay Puoi pubblicare il tuo file xml di layout? Credo che questo codice e il codice degli altri che hanno risposto alla tua domanda siano corretti, quindi il problema potrebbe essere altrove. – Angelo

+0

ho pubblicato il file di layout. – kay

0

// è necessario rimuovere android:state_pressed="true" quando android:state_focused="true" è anche vero.

<?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: avete bisogno di dare l'attributo LinearLayout come android:clickable="false"

+0

ha provato il tuo suggerimento ma non ha aiutato, grazie però. – kay

+0

@kay ho avuto il tuo problema. vedi la mia risposta modificata. –

+0

anche quello non ha funzionato padma. Quello che sta accadendo dopo che ho fatto clic è che questo background di testo diventa trasparente e la finestra popup viene chiusa. – kay

0

Userete il vostro TextView come Casella di controllo, non è vero?

Utilizzare una bandiera booleana per provare questo.

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

provato il tuo suggerimento ma non ha aiutato, grazie però. – kay

0

Verificare se si è verificato un conflitto di denominazione. Nel caso in cui nessuna delle tue modifiche sia mostrata, la possibilità che non funzioni a causa di qualche tipo di problema di denominazione in conflitto con una libreria importata potrebbe essere il tuo problema principale.

Problemi correlati