Saltar al contenido

Cómo personalizar un Spinner en Android

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
ingrese la descripción de la imagen aquí

 

    

    


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.

ingrese la descripción de la imagen aquí

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

ingrese la descripción de la imagen aquí

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:

  1. Cree un archivo xml de diseño personalizado para su elemento desplegable, digamos que lo llamaré spinner_item.xml
  2. 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;
    
    
    
    
  3. 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.

Reseñas y puntuaciones de la guía

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *