2011-10-09 12 views
5

Ho esaminato la maggior parte delle domande su questo argomento e non sembra esserci una risposta definitiva. Ho tre filatori in diverse file di una vista tabella. Utilizzando l'attributo peso, le celle nella tabella e, di conseguenza, le filature e le viste di testo hanno tutte la stessa larghezza.Android: Ridurre la larghezza della casella a discesa di uno spinner

Tuttavia, quando si fa clic su uno spinner, l'elenco a discesa viene visualizzato a tutta larghezza e copre l'intera tabella. Ci deve essere un modo per limitare la larghezza della lista. Dopo tutto, contiene solo un numero con un massimo di 4 cifre.

Ho visto una nota su R.attr.dropDownWidth che sembra possa essere d'aiuto ma non ho idea di come implementare questo metodo, figuriamoci se effettivamente funzionerà.

Qualsiasi aiuto su questo o su un altro metodo che limiterà la larghezza del menu a tendina a circa 100 dip sarà molto apprezzato, specialmente se è incluso un codice di esempio.

Grazie,

Alan ...

risposta

5

Tuttavia, quando un filatore viene cliccato, l'elenco a discesa appare a tutta larghezza e copre l'intera tabella.

Questo perché è davvero una finestra di dialogo a comparsa.

Ci deve essere un modo per limitare la larghezza della lista.

Questo è difficile, in quanto non si è quello che crea il dialogo. Non vedo nemmeno come si possa ottenere ciò estendendo Spinner con la propria sottoclasse, dato il modo in cui è scritto Spinner. Potrebbe essere necessario clonare il codice sorgente Spinner, spostarlo in un altro pacchetto (o nome classe) e modificare performClick() per modificare le dimensioni dello AlertDialog utilizzando le tecniche descritte in How to control the width and height of the default Alert Dialog in Android?.

E, tenere presente che il comportamento di Spinner è significativamente diverso su Honeycomb, e resta da vedere come appare su Ice Cream Sandwich. Non abbiamo il codice sorgente Honeycomb, quindi la mia soluzione clone-the-class ti darà problemi sui dispositivi più recenti.

ho visto una nota sulla R.attr.dropDownWidth che sembra come se si può aiutare, ma non ho idea di come implementare questo metodo, figuriamoci se sarà effettivamente funzionare.

Non è un metodo, ma piuttosto un attributo che è possibile impostare in uno stile. Tuttavia, in base al codice sorgente, sembra che venga utilizzato solo per il menu a discesa AutoCompleteTextView.

+0

Hi CommonsWare, Sì, ero giunto alla stessa conclusione e ho intenzione di lasciare le cose come sono. Come dici tu, questa situazione potrebbe essere diversa nelle versioni successive ma, almeno per ora, ho bisogno di rimanere compatibile all'indietro. Grazie comunque. Alan ... –

+0

Avendo caricato su un dispositivo diverso, noto che gli elementi della selezione e dell'elenco sono abbastanza difficili da selezionare. Avevo impostato la vista testo nella riga xml come 'contenuto di avvolgimento' e significava che, se c'erano solo 1 o 2 caratteri nella tv, dovevi effettivamente colpirli per selezionare la riga. Passando a "fill_parent" il televisore si allunga su tutta la fila e rende più facile la selezione. Ho pensato che questo potesse aiutare gli altri. I migliori auguri, Alan ... –

Problemi correlati