2010-06-13 10 views
17

Tengo un spinner android que está poblado por una lista de cadenas usando un ArrayAdapter y funciona bien, sin embargo, debido a la forma en que se muestra el spinner me estoy encontrando con un problema de altura de visualización con los elementos de la lista.¿Cómo puedo gestionar la altura de los elementos del girador de Android?

A primera vista parecería que el ArrayAdapter puede usar un único diseño para mostrar las opciones que conducen al problema que estoy teniendo. Cuando se muestra el elemento actual en la ruleta (cuando el usuario no está seleccionando un nuevo elemento de la lista), el girador rellena el texto de modo que la ruleta tenga un tamaño razonable para hacer clic. Sin embargo, cuando el usuario toca el botón y abre la lista para seleccionar un nuevo elemento, los elementos de la lista presentados son pequeños en cuanto a la altura. Si utilizo un diseño de elemento que presenta los elementos de la lista a una altura razonable, entonces el spinner se vuelve exorbitantemente enorme debido a su propio relleno del elemento de la lista.

¿Alguna idea sobre cómo puedo gestionar la altura de estos dos modos de visualización de elementos para que se muestren efectivamente con el mismo valor de altura en lugar de la altura del rotor superior a la altura de visualización de elementos de la lista?

Respuesta

44

me he encontrado con este problema a mí mismo hace un tiempo, y resultó que necesito utilizar diferentes diseños de pantalla desplegable y

tengo este código:

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

Eso es perfecto. ¡Gracias! Para que quede claro, el método setDropDownViewResource establece la vista de elementos que se muestra cuando el usuario está seleccionando de una lista de elementos. – rushinge

13

Sí, el la respuesta anterior es correcta.

Me llevó mucho tiempo encontrar esto, porque está mal en las muestras de sdk para Android 2.2. Y me costó aceptar eso.

He aquí un fragmento de muestras/android-12/Spinner/src/com/android/ejemplo/spinner/SpinnerActivity.java:

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

mientras que debería tener android.R.layout.simple_spinner_item allí en su lugar y sólo debe ser simple_spinner_dropdown_item utilizado para los elementos desplegables. De lo contrario, la flecha giratoria se estirará y dibujará un círculo de selección desplegable en la pantalla también.

+0

tu publicación me ha ayudado tanto como a dejarme confundida. La respuesta dada por Pentium10 todavía utiliza la variante desplegable en la llamada setDropDownViewResource(), que conduce a un amplio relleno de elementos. Solo intente modificar las propiedades de un tema en esta configuración: buena suerte con las inconsistencias ... –

+0

La respuesta de Pentium10 es correcta, como dije, y solo me alegré de eso. Mis comentarios son acerca de la muestra que pensé que debería mencionarse también, porque no detecté la falla inicialmente y esa es la razón por la que fui buscando una solución en primer lugar. –

+0

Oh, lo tengo. Gracias por la aclaración. Y una vez más, su respuesta me condujo por el camino correcto, incluso si al principio malinterpreté el contexto. –

Cuestiones relacionadas