2012-07-12 10 views
5

Używam PopUpwindow z widokami tekstu w nim. Problem: Kiedy klikam dowolny tekst, kolor tła się nie zmienia, ale zmienia się, gdy widok tekstu jest skupiony, ale nie na kliknięciu.Kolor tła widoku tekstu nie zmienia się po kliknięciu w popupwindow

Po kliknięciu jestem odwoływanie popupwindow, a jeśli ja nie odrzucenie popupwindow następnie zmienia kolor tła w zależności od selektora:

To jest mój selektor TextView background:

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

w moja popupwindow wszystko robię to:

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

}}); 

plik układ dla 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> 

To dość dziwne zachowanie, wszystko działa dobrze, jeśli nie odrzucę okna popupwindow, ale jeśli odrzucę okno popupwindow na tle tekstowego podglądu, nie zmieni się.

Co robię źle? Każda pomoc zostanie doceniona.

Odpowiedz

0

Wierzę, że jeśli używasz powyższy kod, będzie 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> 

Nie można zdefiniować dwa różne stany w danej pozycji.

Nadzieję, że pomaga.

+0

dzięki za sugestię, ale to nie pomogło, tło tekstu w tle nie zmienia się po kliknięciu. – kay

+0

@kay Czy umieścisz swój plik xml układu? Uważam, że ten kod i kod innych, które odpowiedziały na twoje pytanie, są poprawne, więc problem może być gdzie indziej. – Angelo

+0

opublikowałem plik układu. – kay

0

// Należy również usunąć android:state_pressed="true", gdy android:state_focused="true" jest również prawdziwy.

<?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: trzeba dać swój atrybut Linearlayout jako android:clickable="false"

+0

próbował twojej sugestii, ale to nie pomogło, dzięki. – kay

+0

@kay Mam twój problem. zobacz moją zredagowaną odpowiedź. –

+0

to też nie działało na padmę. To, co się dzieje po tym, jak kliknę, to tło widoku tekstowego staje się przezroczyste, a okno popupwindow jest zwalniane. – kay

0

Będziesz korzystać z TextView jak opcji, to prawda?

Aby to wypróbować, użyj flagi binarnej.

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

próbował twojej sugestii, ale to nie pomogło, dzięki. – kay

0

Sprawdź, czy nie ma konfliktu nazw. W przypadku, gdy żadna z twoich zmian się nie pojawi, głównym problemem może być możliwość, że nie działa z powodu jakiegoś problemu z nazewnictwem, będącego w konflikcie z importowaną biblioteką.

Powiązane problemy