I filatori forniscono due stati. Il primo e lo stato predefinito (stato A) mostra il valore attualmente selezionato. Il secondo (stato B) mostra un menu a discesa quando viene toccata la finestra di selezione.Personalizzazione della spaziatura dei filatori
Per impostazione predefinita un padding sinistro si aggiunge agli elementi visualizzati in stato di A e B. vorrei rimuoverla quando viene visualizzato il valore corrente selezionato (stato A), ma per mantenerlo quando le voci sono visualizzate nel menu a discesa (stato B).
Dal momento che l'imbottitura è impostata con il CheckedTextView utilizzati nel layout specificato quando viene creata la filatrice, il mio primo tentativo è stato quello di passare al costruttore filatore un layout personalizzato che contiene un CheckedTextView con imbottitura vuoto. In questo modo, i disapears padding sinistro nello Stato A, ma anche in stato B. Tuttavia, il mio obiettivo era di tenerlo per lo stato A.
Il mio secondo tentativo è stato quello di personalizzare Android: dropDownSpinnerStyle nella mia definizione del tema. Poiché si modifica il colore di sfondo per Android : dropDownSpinnerStyle cambia il colore di sfondo dell'elemento solo nello stato A, il mio pensiero era di ignorare marginLeft o paddingLeft con un valore negativo. Sfortunatamente, non ha alcun effetto.
Dato che il margine negativo/padding sembra non essere preso in considerazione, ho provato il contrario. In primo luogo, ho usato un layout personalizzato (come spiegato per il mio primo tentativo) per rimuovere il riempimento sinistro su entrambi gli stati (A e B). In secondo luogo, ho definito uno stile personalizzato per la proprietà android: dropDownListViewStyle. Sfortunatamente, l'utilizzo di un valore di margine positivo sinistro con l'ultima proprietà non ha alcun effetto. Quindi, ho impostato paddingLeft. Funziona e mi consente di ottenere la spaziatura sinistra solo per lo stato B. Tuttavia, lo spazio sinistro si applica anche al colore del tocco di sfondo (vedi immagine sotto).
Credo che solo lo stile per lo stato A deve essere modificato se voglio avere il colore di sfondo sul touch che riempie completamente la larghezza del menu a discesa. Qualsiasi idea, suggerimento o esempio è accolto favorevolmente.
Qui di seguito è la mia definizione del tema per il terzo tentativo:
<style name="Theme.App.Base" parent="Theme.App">
...
<item name="android:dropDownListViewStyle">@style/Widget.Spinner.DropDown.ListView</item>
</style>
<style name="Widget.Spinner.DropDown.ListView" parent="Widget.AppCompat.ListView.DropDown">
<item name="android:paddingLeft">16dp</item>
</style>
Hai provato? http://stackoverflow.com/questions/16694786/how-to-customize-a-spinner-in-android – jyoon