2010-10-27 13 views
7

Tengo un spinner con un arrayadapter que se gestiona dinámicamente. cuando se muestra, el texto del girador también muestra el botón de radio. ¿Cómo me deshago de este botón de radio? la flecha desplegable está erizada y asquerosa ... ese es mi problema. NOTA: no estoy hablando de los botones de opción que aparecen en la lista que se muestra cuando selecciono el menú desplegable en la ruleta.¿por qué mi spinner android muestra el botón de opción en la vista de texto?

aquí el fragmento de código apropiado ... par de puntos:

  • este código es en el constructor del widget de que es una subclase de Spinner
  • valor es una matriz de instancias de objetos (pasado, cuando se crea el widget)
  • no hay recursos XML; todos los widgets se crean dinámicamente
  • pensando que necesito "manipular" el prompt, agregué setPrompt (...) en el constructor y también en el detector de eventos onitemclicked ... esto no tuvo ningún efecto.

P: ¿Qué me falta? me parece que me falta algún atributo del Spinner que está causando que el botón de radio también se muestre en la parte del texto del girador.

- sección de código -

public class ChoiceGroupImpl extends Spinner implements OnItemSelectedListener { 
    public ChoiceGroupImpl(Activity activity, WidgetContainer container, Value widget, AttributeImpl attributes, Object[] value, int selected) { 
... 
     adapter = new ArrayAdapter<CharSequence>(activity, R.layout.simple_spinner_dropdown_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     for (int i = 0; i < value.length; i++) 
      adapter.add(value[i].toString()); 
     if (attributes.isReadonly()) 
      setEnabled(false); 
     setAdapter(adapter); 
     setSelection(selected); 
     setPrompt(adapter.getItem(selected)); 
     setOnItemSelectedListener(this); 
... 
} 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     setPrompt(adapter.getItem(position)); 
     ((ToolkitImpl) Toolkit.getInstance()).hiddenCommand(container, "SelectionChanged"); 
    } 
... 

- código de recorte final -

+0

¡Oh! Por cierto: no estoy anulando ninguno de los diseños de vista, dibujar métodos. –

Respuesta

15

uso simple_spinner_item en lugar de simple_spinner_dropdown_item durante la creación de su adaptador

adapter = new ArrayAdapter<CharSequence>(activity, R.layout.simple_spinner_item); 
+1

¡Ah! ¡eso lo hizo! parece lo suficientemente simple, ¡no es de extrañar que me lo haya perdido! THX –

+2

bien, entonces ... acepta la respuesta. – franklins

+0

gracias fab gran respuesta ... –

18

Si desea mantener la radio botón en la ruleta, pero no en la vista de texto, haga esto:

adapter = new ArrayAdapter<CharSequence>(activity, android.R.layout.simple_spinner_item); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
+1

Esta es una solución más completa, IMO. – Ken

+0

whell done this responde algunos de mis pensamientos. gran respuesta. – John

+0

El problema con esta solución es que la casilla de verificación es visible durante el onClick-highlighting –

Cuestiones relacionadas