Cómo cambiar el diseño de spinner en Android

Cuando O haga clic en este spinner que da un menú desplegable grande:

Introduzca aquí la descripción de la imagen

Quiero una vista muy pequeña como en la segunda imagen. Al igual que los desplegables en ASP.NET. Como esto con el ancho poco más reducido.

Introduzca aquí la descripción de la imagen

He utilizado el siguiente código. Cualquier ayuda para cambiar la vista de la segunda imagen será apreciada.

Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); 

Este es un buen artículo: Personalización de la barra de acciones

Y también puedes probar esto:

Diseña tu propia personalizable dibujable para spinner fondo y se aplican a ella. Para las imágenes de spinnerbackground.xml puede consultar las imágenes del SDK. Recrear las imágenes según sus requisitos de diseño

"Android-sdk \ plataformas \ android-9 \ data \ res \ drawable-hdpi \ *. Png"

Spinnerbackground.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/wlbtn_dropdown_normal" /> <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/wlbtn_dropdown_disabled" /> <item android:state_pressed="true" android:drawable="@drawable/wlbtn_dropdown_pressed" /> <item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/wlbtn_dropdown_selected" /> <item android:state_enabled="true" android:drawable="@drawable/wlbtn_dropdown_normal" /> <item android:state_focused="true" android:drawable="@drawable/wlbtn_dropdown_disabled_focused" /> <item android:drawable="@drawable/wlbtn_dropdown_disabled" /> </selector> 

Entonces para el widget del hilandero aplique su drawable:

 <Spinner android:background="@drawable/spinnerbackground" android:id="@+id/spinnerIDr" android:layout_height="wrap_content" android:layout_width="fill_parent"> </Spinner> 

Editado:

 <Spinner android:background="@drawable/spinnerbackground" android:id="@+id/spinnerIDr" android:popupBackground="@drawable/popup_background" android:layout_height="wrap_content" android:layout_width="fill_parent"> </Spinner> 

Donde popup_background es: Introduzca aquí la descripción de la imagen

y

Diseñe su diseño personalizado para los textos giratorios como (nombre: custom_spiner.xml)

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="4dp" android:textSize="14sp" android:typeface="serif" android:singleLine="true" android:layout_marginLeft="2dip" android:layout_marginRight="5dip" android:ellipsize="marquee" android:textColor="#000000"> </TextView> 

Y usarlo como

 adapter.setDropDownViewResource(R.layout.custom_spiner); 

En su código.

Editado 2:

Si quieres hacer esto usando el código java lee sobre PopupWindow

Y puede ser útil: custom-spinner

Sigue estos pasos. Ya lo he implementado.

(1) No utilice la hiladora. En su lugar utilice un botón con fondo establecido en "@android: drawable / btn_dropdown". Este botón se verá exactamente igual que el spinner nativo. Si quieres que se vea un uso diferente de su propio recurso.

(2) Necesita reemplazar la clase de diálogo e invocarla al hacer clic en el botón. En el constructor de la clase de diálogo extendida, puede utilizar su propio recurso de diseño.

 this.setContentView(R.layout.dropdownlist); 

También puede cambiar la apariencia de la ventana con el siguiente código

 WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.width = dlgWidth; lp.height = dlgHeight; lp.dimAmount = 0; getWindow().setAttributes(lp); getWindow().setBackgroundDrawableResource(mBackgroundResId); 

(3) Puede tener una vista de lista en su diseño personalizado y en "OnItemClickListener" de la lista, descartar el diálogo y hacer lo que necesita hacer más.

Espero que esto ayude.

Añadir atributo en la etiqueta Spinner

Android: dropDownWidth = "150dp"

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.