Solución:
Cree un adaptador personalizado con un diseño personalizado para su ruleta.
Spinner spinner = (Spinner) findViewById(R.id.pioedittxt5);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
R.array.travelreasons, R.layout.simple_spinner_item);
adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
R.layout.simple_spinner_item
R.layout.simple_spinner_dropdown_item
En estilos, agregue sus dimensiones y altura personalizadas según sus requisitos.
Puede crear un diseño giratorio completamente personalizado como
Paso 1: En la carpeta dibujable, haga background.xml para un borde de la ruleta.
Paso 2: para el diseño de diseño de la ruleta, use este ícono desplegable o cualquier imagen desplegable.png
Finalmente se ve como la imagen de abajo y se puede hacer clic en todas partes en el área redonda y no es necesario escribir, haga clic en Lister para imageView.
Paso 3: para el diseño desplegable, elimine la línea de Dropdown ListView y cambie el color de fondo, cree un adaptador personalizado como
Spinner spinner = (Spinner) findViewById(R.id.spinner1);
String[] years = "1996","1997","1998","1998";
ArrayAdapter langAdapter = new ArrayAdapter(getActivity(), R.layout.spinner_text, years );
langAdapter.setDropDownViewResource(R.layout.simple_spinner_dropdown);
mSpinner5.setAdapter(langAdapter);
En la carpeta de diseño, cree R.layout.spinner_text.xml
En la carpeta de diseño, cree simple_spinner_dropdown.xml
En estilos, puede agregar dimensiones y altura personalizadas según sus requisitos.
Finalmente se ve como
De acuerdo con el requisito, puede cambiar el color de fondo y el texto del color del menú desplegable cambiando el color de fondo o el color del texto de simple_spinner_dropdown.xml
La solución más elegante y flexible que he encontrado hasta ahora está aquí: http://android-er.blogspot.sg/2010/12/custom-arrayadapter-for-spinner-with.html
Básicamente, sigue estos pasos:
- Cree un archivo xml de diseño personalizado para su elemento desplegable, digamos que lo llamaré spinner_item.xml
-
Cree una clase de vista personalizada para su Adaptador desplegable. En esta clase personalizada, debe sobrescribir y configurar el diseño de su elemento desplegable personalizado en los métodos getView () y getDropdownView (). Mi código es el siguiente:
public class CustomArrayAdapter extends ArrayAdapter
private List objects; private Context context; public CustomArrayAdapter(Context context, int resourceId, List objects) super(context, resourceId, objects); this.objects = objects; this.context = context; @Override public View getDropDownView(int position, View convertView, ViewGroup parent) return getCustomView(position, convertView, parent); @Override public View getView(int position, View convertView, ViewGroup parent) return getCustomView(position, convertView, parent); public View getCustomView(int position, View convertView, ViewGroup parent) LayoutInflater inflater=(LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); View row=inflater.inflate(R.layout.spinner_item, parent, false); TextView label=(TextView)row.findViewById(R.id.spItem); label.setText(objects.get(position)); if (position == 0) //Special style for dropdown header label.setTextColor(context.getResources().getColor(R.color.text_hint_color)); return row; -
En su actividad o fragmento, utilice el adaptador personalizado para su vista giratoria. Algo como esto:
Spinner sp = (Spinner)findViewById(R.id.spMySpinner); ArrayAdapter
myAdapter = new CustomArrayAdapter(this, R.layout.spinner_item, options); sp.setAdapter(myAdapter);
donde opciones es la lista del elemento desplegable string.