2014-11-14 18 views
11

Ho uno Button che voglio modellare come uno spillo stile Holo, ovvero sottolineato con un triangolo nell'angolo in basso a destra - l'app contatti integrata per esempio lo fa.Come creare un widget Widget.Holo.Spinner in v7

enter image description here

Il modo più semplice è quello di creare il pulsante e lo stile come style="@android:style/Widget.Holo.Spinner" - che mi dà il risultato visivo che voglio.

Tuttavia, la mia app è pensata per supportare Android 2.x, quindi non posso usare gli stili nativi di Holo. AppCompat ha diversi stili correlati a spinner, come @style/Widget.AppCompat.Spinner e altri, ma non hanno lo stesso aspetto: creano solo un piccolo triangolo al centro sul lato destro del widget e nessuna sottolineatura.

Ho potuto fonderlo creando il mio sfondo a 9 patch, ma non riesco a immaginare che questo stile di selezione Holo manchi da AppCompat di v7. C'è uno stile che posso usare, o qualsiasi altro modo per creare il risultato visivo che voglio senza creare la mia risorsa drawable?

risposta

2

L'utente "ozi" mi ha portato lì, purtroppo la sua risposta è stata cancellata perché era solo un collegamento.

Il trucco consiste nell'utilizzare un attributo personalizzato e sovrascriverlo con una sezione specifica per v11. Ecco la configurazione di base se si utilizza temi:

In valori/attr.xml:

<declare-styleable name="MyApp"> 
    <attr name="holoSpinnerStyle" format="reference" /> 
</declare-styleable> 

Si crea la tua Spinner-Button in questo modo:

<Button 
    style="?attr/holoSpinnerStyle" 
    /> 

E qui è la chiave: Hai valori diversi nel tema a seconda se non si dispone di v11:

in valori/themes.xml:

<style name="MyTheme"> 
    <item name="holoSpinnerStyle">@style/Widget.AppCompat.Spinner</item> 
</style> 

In valori-V11/themes.xml:

<style name="MyTheme"> 
    <item name="holoSpinnerStyle">@android:style/Widget.Holo.Light.Spinner</item> 
</style> 

Se non si utilizza temi, la configurazione è quasi identico - è sufficiente utilizzare styles.xml, crea uno stile specifico per il pulsante, e usa quello

In pre-v11, questo creerà uno spinner vecchio stile, ma in realtà è buono: uno spinner V11 apparirebbe fuori posto nell'ambiente pre-v11.

2

Non ti consiglio di applicare un pulsante come uno spillo. Android ha creato uno stile particolare per lo button per un motivo. La ragione di questo semplice; confonderai gli utenti della tua app se hai stile un pulsante come uno spinner e penseranno che il pulsante sia uno spinner. Questo è il motivo per cui il team di progettazione Android non lo consiglia.

Tuttavia, se ancora desidera visualizzare il pulsante come sninner, si può sempre copiare il disegno del filatore, salvarla come immagine e impostarla come sfondo del TUO pulsante attraverso questo xml:

android:background="@drawable/spinner" 

Il file di selezione rotella deve essere salvato nella cartella dei disegni come immagine.

+0

Come ho già detto, l'app dei contatti integrata lo fa.Ho controllato la loro interfaccia utente, è davvero un pulsante che sembra uno spinner. Ho intenzione di aprire una finestra popup quando fai clic su di esso (di nuovo, come l'app dei contatti), quindi il comportamento non è così inaspettato. – EboMike

+0

quindi puoi semplicemente creare un drawable da questa immagine per esempio http://i.stack.imgur.com/7ZGFW.png e creare l'immagine da lì. In alternativa puoi usare questo sito: http://android-holo-colors.com/ L'ho trovato fantastico personalmente –

+0

@EboMike Sei riuscito a creare il drawable? –

Problemi correlati