2010-01-14 11 views
16

Sto provando a rilevare il colore della messa a fuoco/premuto per il pulsante e altri elementi. Ciò è necessario perché sto sviluppando nuovi componenti ed è importante che questi siano parte della piattaforma. Questi colori sono ARANCIONE su sdk Android e VERDE su HTC SenseUI. Se potessi rilevare quel colore, il mio componente apparirà come parte della piattaforma su entrambe le versioni.Risolto: "Android: Rilevamento della messa a fuoco/colore premuto"

Qualcuno sa come farlo?


E 'possibile creare "selettore" immagine personalizzata che utilizza per stato di default e di default piattaforma per la messa a fuoco/selezione.

Per fare questo seguire la procedura: 1) Creare file XML con selettore nella "res/drawable" (ad esempio "red_button.xml"):

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true" 
     android:drawable="@android:drawable/btn_default" > 
    </item> 

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

    <item 
     android:drawable="@drawable/btn_default_red" > 
    </item> 
</selector> 

2) dalla cartella " .../android-sdk-mac/piattaforme/android-1.5/data/res/drawable/"scatta foto" btn_default_pressed.9.png "e cambia colore come preferisci (avevo bisogno di cambiarlo in rosso e per questo GIMP è abbastanza).

3) porre immagine modificata in "res/drawable" (ad esempio con il nome "btn_default_red.9.png")

4) definire pulsante:

<Button 
    android:id="@+id/info_button" 
    android:layout_width="wrap_content" 
    android:layout_height="37dip" 
    android:layout_marginTop="1dip" 
    android:background="@drawable/red_button" 
    android:text="[Info]" /> 

Questo è tutto.

Questo è il risultato: alt text http://img200.imageshack.us/img200/1349/custombutton.png

risposta

6

Quelli non sono i colori. Sono alcune immagini a nove patch di un StateListDrawable. Sono scettico sul fatto che ci sarà un modo affidabile per determinare quale sia il colore, che funzioni su tutti i dispositivi e su tutte le versioni di Android.

0

Questo è più o meno un duplicato di: Android ListView Selector Color

Inoltre, perché avete bisogno di rilevare i colori? Basta fare niente ei tuoi widget si adatta al look esistente della piattaforma & feel.

Oppure se stai scrivendo un tema personalizzato, fai in modo che il tuo erediti da android:Theme.

+0

Ho bisogno di colore perché il cliente desidera il colore predefinito (quando non selezionato o focalizzato) per rappresentare il CD/CI dell'azienda mentre il colore di selezione/messa a fuoco è la piattaforma (Android predefinito, HTC SenseUI) dipendente. –

+0

Sembra che sembrerà orribile, ma ok! –

+0

Ho aggiunto un'immagine (collegamento all'immagine) dei pulsanti risultanti. Non sono un designer, ma penso che i pulsanti siano accettabili. –

8

Ho avuto anche questo problema. Come già detto, il problema è che gli sfondi non sono semplici colori, sono disegnabili che potrebbero assumere qualsiasi tipo di aspetto. Tuttavia, ho trovato un work-around che può aiutare. Se il tuo componente personalizzato ha un aspetto simile a uno esistente, ad es. una voce Button o ListView, puoi semplicemente rubare il loro sfondo/selettore e impostarlo come sfondo per il tuo componente personalizzato. Per esempio, nella vostra abitudine componente costruttore:

setBackgroundDrawable(new Button(context).getBackground()); 

o per uno sfondo più adatto per i componenti della lista-like:

setBackgroundDrawable(new ListView(context).getSelector()); 

Si consiglia di ottimizzare il codice in qualche modo, ma si ottiene l'idea.

+1

bel trucco –

+0

Yep bel piccolo trucco. Un compito apparentemente semplice che ha davvero impiegato giorni di ricerca per scoprire anche un lavoro. Grazie tante. –

Problemi correlati