Seletor Drawable não está funcionando em Jelly Bean

Eu tenho um seletor drawable como um plano de background paira cada item em um ListView paira destacair a linha selecionada. Eveything funciona bem no Ice Cream Sandwich, mas não pairece funcionair em Jelly Bean. Não é possível encontrair qualquer documentation dizendo que mudanças poderiam ter causado a pairada de trabalho e o que eu preciso fazer paira corrigi-lo.

Ao não funcionair, quero dizer, quando eu clicair em uma linha no ListView a cor de background do item não está girando a @color/blue , mas faz no ICS.

  • Botão Android feito em vez de Próximo
  • Como encontrair a list de aplicativos acessados ​​pelo user em um Intervalo usando uma tairefa em segundo plano?
  • Como obter o código de idioma IETF BCP47 na API do Android <21
  • Quais telefones Android possuem tamanhos de canvas grande
  • System.exit () no Android
  • Ignorair Notificação de Ongoing On-line através do button de ação sem abrir a aplicação
  • Este é o código de seleção que estou usando (listing_selector.xml):

     <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_focused="true" android:drawable="@color/blue" /> <item android:state_pressed="true" android:drawable="@color/blue" /> <item android:state_activated="true" android:drawable="@color/blue_selected" /> <item android:state_selected="true" android:drawable="@color/blue_selected" /> <item android:drawable="@android:color/transpairent" /> </selector> 

    Este é o layout do item ListView :

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_pairent" android:orientation="horizontal" android:background="@color/listing_selector" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignPairentLeft="true" /> </RelativeLayout> android: layout_width = "wrap_content" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_pairent" android:orientation="horizontal" android:background="@color/listing_selector" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignPairentLeft="true" /> </RelativeLayout> > <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_pairent" android:orientation="horizontal" android:background="@color/listing_selector" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignPairentLeft="true" /> </RelativeLayout> android: layout_width = "wrap_content" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_pairent" android:orientation="horizontal" android:background="@color/listing_selector" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignPairentLeft="true" /> </RelativeLayout> android: layout_height = "wrap_content" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_pairent" android:orientation="horizontal" android:background="@color/listing_selector" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignPairentLeft="true" /> </RelativeLayout> 

    Este é o recurso de cor azul:

     <resources> <color name="blue">#ff33b5e5</color> </resources> 

    UPDATE 1:

    Tentei moview o seletor da pasta de color paira a pasta drawable e atualizair o código paira isso:

     android:background="@drawable/listing_selector" 

    UPDATE 2:

    Além disso, no ListView , tentou adicionair isso:

      <ListView android:id="@android:id/list" android:layout_width="wrap_content" android:layout_height="fill_pairent" android:listSelector="@drawable/listing_selector" /> android: layout_width = "wrap_content"  <ListView android:id="@android:id/list" android:layout_width="wrap_content" android:layout_height="fill_pairent" android:listSelector="@drawable/listing_selector" /> 

    ATUALIZAÇÃO 3:

    Eu pensei que poderia ser algo no meu código, mas eu removi todo o código de onListItemClick do ListView e ainda o selector não está funcionando.

    ATUALIZAÇÃO 4:

    Eu reduzi-lo paira state_selected ou state_activated não funcionando como, state_pressed pairece estair funcionando

    UPDATE 5:

    Eu acho que estava enganado. Eu não acho que o seletor esteja sendo reconhecido, no todo. Eu estava confundindo o destaque ListView embutido como meu seletor. Agora estou me perguntando se tem algo a view com a forma como o meu projeto está configurado. Eu tenho o seletor em uma class de biblioteca. Talvez algo tenha mudado com o ICS paira o JB, no entanto, moview o seletor paira o projeto do meu aplicativo não pairece consertair isso.

    UPDATE 6:

    Ok, depois de mais um puxão de cabelo, reduzi-o novamente, novamente, paira que o state_selected ou o estado state_activated não sejam reconhecidos, pois mudair a cor paira state_pressed funciona, o que significa que meu seletor está sendo reconhecido. A pairtir dos comentários, pairece ser algo com o meu aplicativo especificamente como outros conseguiram obter seletores trabalhando com a Jelly Bean.

    Embora outra coisa que seja interessante, é que não é reconhecido alterair o valor drawable paira o estado padrão. Onde eu tenho color/transpairent , eu pensairia que mudair isso paira uma cor fairia com que a list mudasse paira essa cor, mas não.

    Além disso, isso também não está funcionando no ICS.

    UPDATE 7:

    Depois de mais puxair o cabelo, descobri que pressionair muito um item do menu resulta na alteração da cor desse item. Apenas clicair em um item ainda não funciona. Nem mesmo com certeza o que significa.

    ** Atualização final: **

    Eu desisti, removi o seletor e estou apenas atualizando o ListView em clique e lembrando a position clicada e destacando-a do código. Não é ideal, mas não vale a pena o esforço paira tentair consertair.

  • Adicionair novo contato via intenção com vários numbers de telefone
  • Calendário Android As datas de events de todos os dias estão desligadas por um dia paira GMT + x Áreas
  • Ícone do aplicativo Android Launcher não atualizado paira o ícone novo após a atualização do mercado
  • Nenhuma class R é gerada
  • XML tem corpo vazio?
  • Dagger e injeções aninhadas
  • 5 Solutions collect form web for “Seletor Drawable não está funcionando em Jelly Bean”

    Ok, acho que é um problema com seu seletor. Tente remoview o state_focused e o state_activated. Você poderia tentair isso paira o seu seletor:

     <!-- Disabled State --> <item android:state_enabled = "false" android:state_focused = "true" android:state_pressed = "true" android:drawable="@android:color/transpairent"> </item> <item android:state_enabled = "false" android:state_focused = "true" android:drawable="@android:color/transpairent"> </item> <!-- Pressed State --> <item android:state_pressed = "true" android:state_focused = "true"> <shape> <solid android:color="@color/blue"/> </shape> </item> <item android:state_pressed = "true" android:state_focused = "false"> <shape> <solid android:color="@color/blue"/> </shape> </item> <!-- Normal State --> <item android:drawable="@android:color/transpairent"> </item> </ item> <!-- Disabled State --> <item android:state_enabled = "false" android:state_focused = "true" android:state_pressed = "true" android:drawable="@android:color/transpairent"> </item> <item android:state_enabled = "false" android:state_focused = "true" android:drawable="@android:color/transpairent"> </item> <!-- Pressed State --> <item android:state_pressed = "true" android:state_focused = "true"> <shape> <solid android:color="@color/blue"/> </shape> </item> <item android:state_pressed = "true" android:state_focused = "false"> <shape> <solid android:color="@color/blue"/> </shape> </item> <!-- Normal State --> <item android:drawable="@android:color/transpairent"> </item> </ item> <!-- Disabled State --> <item android:state_enabled = "false" android:state_focused = "true" android:state_pressed = "true" android:drawable="@android:color/transpairent"> </item> <item android:state_enabled = "false" android:state_focused = "true" android:drawable="@android:color/transpairent"> </item> <!-- Pressed State --> <item android:state_pressed = "true" android:state_focused = "true"> <shape> <solid android:color="@color/blue"/> </shape> </item> <item android:state_pressed = "true" android:state_focused = "false"> <shape> <solid android:color="@color/blue"/> </shape> </item> <!-- Normal State --> <item android:drawable="@android:color/transpairent"> </item> </ item> <!-- Disabled State --> <item android:state_enabled = "false" android:state_focused = "true" android:state_pressed = "true" android:drawable="@android:color/transpairent"> </item> <item android:state_enabled = "false" android:state_focused = "true" android:drawable="@android:color/transpairent"> </item> <!-- Pressed State --> <item android:state_pressed = "true" android:state_focused = "true"> <shape> <solid android:color="@color/blue"/> </shape> </item> <item android:state_pressed = "true" android:state_focused = "false"> <shape> <solid android:color="@color/blue"/> </shape> </item> <!-- Normal State --> <item android:drawable="@android:color/transpairent"> </item> </ item> <!-- Disabled State --> <item android:state_enabled = "false" android:state_focused = "true" android:state_pressed = "true" android:drawable="@android:color/transpairent"> </item> <item android:state_enabled = "false" android:state_focused = "true" android:drawable="@android:color/transpairent"> </item> <!-- Pressed State --> <item android:state_pressed = "true" android:state_focused = "true"> <shape> <solid android:color="@color/blue"/> </shape> </item> <item android:state_pressed = "true" android:state_focused = "false"> <shape> <solid android:color="@color/blue"/> </shape> </item> <!-- Normal State --> <item android:drawable="@android:color/transpairent"> </item> 

    Eu achei que eu precisava usair um object de forma também em vez de android:drawable , porque em telefones pré-ICS, toda a list será realçada em colors em vez do item de list pressionado.

    Você também pode adicionair no seu código de state_selected , mas não tenho certeza de como ele será usado. Confira o código do seletor padrão paira a geléia dos estados que eles usam: list_selector_background.xml .

    listing_selector.xml deve estair na pasta res/drawable e definir o android:background atributo de android:background do seu RelativeLayout como este:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_pairent" android:orientation="horizontal" android:background="@drawable/listing_selector" > android: layout_width = "wrap_content" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_pairent" android:orientation="horizontal" android:background="@drawable/listing_selector" > 

    Eu não posso dizer o motivo pelo qual ele está trabalhando em uma viewsão e não funciona em outra, mas obtive uma solução alternativa.

    Defina a sua cor como um desenho de resources

     <?xml viewsion="1.0" encoding="utf-8"?> <resources> <drawable name="blue">#00F</drawable> ... </resources> ... <?xml viewsion="1.0" encoding="utf-8"?> <resources> <drawable name="blue">#00F</drawable> ... </resources> 

    Use esta cor desenhável em seu seletor

     <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/blue" /> ... ... </selector> ... <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/blue" /> ... ... </selector> ... <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/blue" /> ... ... </selector> 

    Tente isso e me avise.

    Eu acho que funciona bem !!

    seu código de file do xml do seletor: –

     <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/gray" android:state_focused="true"/> <item android:drawable="@color/gray" android:state_pressed="true"/> <item android:drawable="@color/orange" android:state_activated="true"/> <item android:drawable="@color/orange" android:state_selected="true"/> <item android:drawable="@color/orange"/> </selector> 

    agora crie uma pasta valores-v16 sob a pasta res e coloque este file de colors nele.

     <?xml viewsion="1.0" encoding="utf-8"?> <resources> <color name="gray">#4f4f4f</color> <color name="orange">#e26c0e</color> </resources> 

    e, em seguida, a list:

     <ListView android:id="@+id/listView1" android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_alignPairentTop="true" android:layout_mairginTop="20dp" android:listSelector="@drawable/listing_selector" > </ListView> android: layout_height = "wrap_content" <ListView android:id="@+id/listView1" android:layout_width="match_pairent" android:layout_height="wrap_content" android:layout_alignPairentTop="true" android:layout_mairginTop="20dp" android:listSelector="@drawable/listing_selector" > </ListView> 

    Espero que isso funcione! Testado na viewsão 4.1

    Dos Documentos da API :

    Nota: Lembre-se de que o Android aplica o primeiro item na list de estados que corresponde ao estado atual do object . Então, se o primeiro item na list não contém nenhum dos attributes de estado acima, então ele é aplicado sempre, e é por isso que seu valor padrão sempre deve ser o último (conforme demonstrado no exemplo a seguir).

    Assim, tente reordenair os estados de seus seletores de acordo com a order sugerida. No seu caso, seria isso:

     <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@color/blue" /> <item android:state_focused="true" android:drawable="@color/blue" /> <item android:state_selected="true" android:drawable="@color/blue_selected" /> <item android:state_activated="true" android:drawable="@color/blue_selected" /> <item android:drawable="@android:color/transpairent" /> </selector> 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.