2010-08-17 4 views
11

Quando l'utente preme un oggetto ListView (android: state_pressed = "true") lampeggia di una sfumatura di giallo (oppure è possibile tenere premuto).Qual è il file predefinito per la pressione di una voce di elenco

Che cosa è questo drawable? Ho creato il mio selettore perché voglio il mio colore di ListView, ma perdo il colore premuto.

C'è un documento Android sui pulsanti di scuoiatura che fa riferimento a # ffff0000, ma questo produce rosso.

Qualcuno sa cosa sia e come fare riferimento?

risposta

36

Le risorse di sistema predefinite sono disponibili in <android-sdk>/platforms/android-<version>/data/res. In particolare, il selettore lista è definita drawable/list_selector_background.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_window_focused="false" 
     android:drawable="@color/transparent" /> 

    <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. --> 
    <item android:state_focused="true" android:state_enabled="false" 
     android:state_pressed="true" 
     android:drawable="@drawable/list_selector_background_disabled" /> 
    <item android:state_focused="true" android:state_enabled="false" 
     android:drawable="@drawable/list_selector_background_disabled" /> 

    <item android:state_focused="true" android:state_pressed="true" 
     android:drawable="@drawable/list_selector_background_transition" /> 
    <item android:state_focused="false" android:state_pressed="true" 
     android:drawable="@drawable/list_selector_background_transition" /> 

    <item android:state_focused="true" 
     android:drawable="@drawable/list_selector_background_focus" /> 

</selector> 

Il drawable che viene mostrato su una pressa, list_selector_background_transition, non è un singolo colore ma due immagini 9-toppa, giallo e un bianco, con un transizione animata tra di loro.

<transition xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@android:drawable/list_selector_background_pressed" /> 
    <item android:drawable="@android:drawable/list_selector_background_longpress" /> 
</transition> 
+2

In breve: vuoi fare riferimento a @android: drawable/list_selector_background_transition – Jonas

+0

Quando creo il mio selettore, perché non posso fare riferimento a @android: drawable/list_selector_background_transition? – Andrew

+0

L'ho notato anch'io. In breve, non so perché. Tuttavia, puoi creare la tua copia di list_selector_background_transition nel tuo progetto.Puoi quindi fare riferimento a quello. – Jonas

1

Un colore è definito come #AARRGGBB dove AA rappresenta il valore alfa (trasparenza), RR la quantità di rosso, GG la quantità di verde e BB la quantità di blu. Quindi # ffff0000 è solido e tutto rosso. Se vuoi arancione, vuoi aggiungere un po 'di verde, cioè: # ffffA500. Google per i valori di colore RGB per vedere le pagine di colori con i loro valori rgb.

+1

Sì, ho questo. Mi stavo chiedendo il default di Android. Ma grazie per la vostra risposta – Andrew

2

La cosa di cui stai parlando è il selettore integrato del sistema operativo Android.

Rendere il proprio clou con un file XML nella drawable cartella in questo modo:

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:color="#YOURCOLOR" /> 
    <item android:color="#FE896F" /> 
</selector> 

Poi, nel tuo file XML non avete il vostro ListView.

android:textColor="@drawable/highlight" //For text to appear like YOURCOLOR 
//or if you wish the background 
android:background="@drawable/highlight" //For the background to appear like YOURCOLOR 

Spero che questo sia e mi dica se questo ha funzionato o no!

+1

Grazie per la vostra risposta. Ho già creato un file di selezione come questo. Ho usato il trucco di Romain Guy per mantenere un selettore pad di scorrimento sugli elementi di elenco per i quali ho impostato un colore di sfondo. Quello che sto cercando è il colore stato_pressed predefinito di Android. – Andrew

+0

È possibile eseguire un brutto attacco come stampare l'elemento premuto e quindi cercare il colore RGB, ma ovviamente il colore predefinito viene dichiarato da qualche parte. Il problema è come trovarlo – Curtain

+0

In realtà sembra più una sfumatura di qualche valore – Andrew

0

Ho utilizzato uno strumento di selezione colori in un'applicazione di fotoritocco per trovare i colori esterni e interni del gradiente e creato da me.

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient 
     android:startColor="#ffb300" 
     android:centerColor="#ffc800" 
     android:endColor="#ffb300" 
     android:angle="270"/> 
</shape>