2010-06-13 17 views
17

Ho uno spinner Android che è popolato da un elenco di stringhe utilizzando un ArrayAdapter e funziona bene, tuttavia a causa del modo in cui viene visualizzato lo spinner sto correndo in un problema di altezza del display con gli elementi dell'elenco.Come posso gestire l'altezza degli oggetti spinner Android?

A prima vista sembrerebbe che l'ArrayAdapter possa utilizzare un unico layout per visualizzare le opzioni che portano al problema che sto riscontrando. Quando si visualizza l'elemento corrente nella casella di selezione (quando l'utente non seleziona un nuovo elemento dall'elenco) la casella di selezione consente di inserire il testo in modo che la selezione sia di dimensioni ragionevoli per il clic. Tuttavia, quando l'utente tocca su di esso e fa apparire la lista per selezionare un nuovo elemento, gli elementi della lista presentati sono di piccola altezza. Se utilizzo un layout di un articolo che presenta gli elementi della lista ad un'altezza ragionevole, allora lo spinner stesso diventa esorbitante enorme a causa del suo riempimento della voce di elenco.

Qualche idea su come posso gestire l'altezza di queste modalità di visualizzazione a due voci in modo che vengano visualizzate con lo stesso valore di altezza anziché l'altezza del filatoio che supera l'altezza di visualizzazione dell'elemento di elenco?

risposta

44

Ho incontrato questo problema me stesso qualche tempo fa, e si è scoperto che ho bisogno di utilizzare diversi layout per discesa e la visualizzazione

ho questo codice:

adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cGroups, 
       new String[] { 
         "name", "_id" 
       }, new int[] { 
        android.R.id.text1 
       }); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
+2

Questo è perfetto. Grazie! Per essere chiaro, il metodo setDropDownViewResource imposta la visualizzazione degli elementi visualizzati quando l'utente seleziona da un elenco di elementi. – rushinge

13

Sì, il la risposta sopra è corretta.

Ci ho messo un'eternità a trovarlo, perché è sbagliato negli esempi di sdk per 2.2 Android. E ho avuto difficoltà a accettarlo.

Ecco un frammento da campioni/android-12/Spinner/src/com/android/es/filatore/SpinnerActivity.java:

 
     this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets, 
       android.R.layout.simple_spinner_dropdown_item); 

mentre dovrebbe avere android.R.layout.simple_spinner_item lì invece e simple_spinner_dropdown_item dovrebbe essere solo utilizzato per gli elementi a discesa. Altrimenti la freccia di selezione si allunga e disegna anche il cerchio di selezione a discesa sul display.

+0

il tuo post mi ha aiutato tanto quanto mi lascia confuso. La risposta fornita da Pentium10 utilizza ancora la variante del dropdown nella chiamata setDropDownViewResource(), che porta a un ampio riempimento di elementi. Basta provare a modificare le proprietà in un tema in questa configurazione - buona fortuna con le incongruenze ... –

+0

La risposta di Pentium10 è corretta, come ho detto, e ne sono stato contento. Le mie osservazioni riguardano il campione che ho pensato dovrebbe essere menzionato, perché inizialmente non ho individuato il difetto in esso e questa è la ragione per cui sono andato alla ricerca di una soluzione in primo luogo. –

+0

Oh, capito. Grazie per il chiarimento. E ancora una volta, la tua risposta mi ha portato sulla strada giusta, anche se all'inizio ho frainteso il contesto. –

Problemi correlati