studio programacion not item first developer android spinner

programacion - spinner android developer



Eliminar el espacio o el relleno en android Spinner (11)

Estoy usando Android Spinner y Edittext de soporte lib v21. Me gustaría alinear el texto para dejar el mismo texto de edición como se muestra en la figura. Pero, las hordas sordas incluyen espaciado o relleno. Por lo tanto, me gustaría quitarlo para alinear el texto a la izquierda. Por favor ayuda como quitarlo.


Acabo de golpear este problema también. Pude resolverlo ajustando el margen realmente en lugar de rellenar, así que configuré android: marginStart = "0dp" para el elemento giratorio.


El diseño para TextView que se muestra en su Spinner proviene de su SpinnerAdapter , que proporciona 2 métodos:

  • getView(position, convertView, parent) : devuelve View para el estado contraído, puede anularlo para devolver diferentes diseños para diferentes elementos seleccionados
  • getDropdownView(position, convertView, parent) : return View para cada elemento desplegable en estado expandido (después de hacer clic en Spinner para abrir la ventana emergente / diálogo para la selección)

En su caso, debe anular su SpinnerAdapter.getView(position, convertView, parent) e inflar el diseño con el relleno / espaciado de su elección.

Por ejemplo:

spinner.setAdapter(new MyAdapter());

MyAdapter.java

class MyAdapter implements SpinnerAdapter { @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.spinner_item, parent, false); } // bind your data here return convertView; } // other implementation }

res / layout / spinner_item.xml

<!-- set padding margin whatever here --> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" />

También puede usar una de las subclases indirectas de SpinnerAdapter provistas por el marco ( ArrayAdapter<T>, BaseAdapter, CursorAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, ThemedSpinnerAdapter ), solo asegúrese de proporcionar el diseño correcto que se usará con el método getView() .


En tu SpinnerAdapter:

@Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); view.setPadding(0, view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom()); return view; }


Este adaptador de matriz elimina el relleno izquierdo en Android Spinner.

Versión de Kotlin:

open class NoPaddingArrayAdapter<T>(context: Context, layoutId: Int, items: List<T>?) : ArrayAdapter<T>(context, layoutId, items) { override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View? { val view = super.getView(position, convertView, parent) view.setPadding(0,view.paddingTop,view.paddingRight,view.paddingBottom) return view } }


Este trabajo para mi

Spinner spn = (Spinner) findViewById(R.id.spn); spn.setPadding(0, spn.getPaddingTop(), spn.getPaddingRight(), spn.getPaddingBottom());


Intente código debajo para hacerlo. Cambie el atributo de estilo en el diseño de su elemento de lista de giro a textViewStyle como se muestra a continuación

<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/textViewStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="false" android:textAlignment="inherit" android:textAppearance="?android:attr/textAppearanceMedium" />


Prueba esto,

  1. Cree un diseño personalizado (según sea necesario) para la fila de giro.

  2. Infle el diseño cuando configure el adaptador de datos para el control de giro.


Puede personalizar su propio Spinner a través del parche Nine y especificar el relleno


Si está utilizando un adaptador personalizado, intente configurar el relleno en getView() :

@Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); view.setPadding(0, view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom()); return view; }


Si no quieres meterte en Java Code y tenerlo en estilos

Buscar este archivo (Cmd + Shift + O) abc_spinner_textfield_background_material.xml

y copia a tu proyecto. Elimine todos los valores de inserción del elemento raíz y consulte el archivo como fondo de su control de giro.

En mi caso, se ve así ( drawable/spinner_background.xml )

<inset xmlns:android="http://schemas.android.com/apk/res/android"> <selector> <item android:state_checked="false" android:state_pressed="false"> <layer-list> <item android:drawable="@drawable/abc_textfield_default_mtrl_alpha" /> <item android:drawable="@drawable/abc_spinner_mtrl_am_alpha" /> </layer-list> </item> <item> <layer-list> <item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha" /> <item android:drawable="@drawable/abc_spinner_mtrl_am_alpha" /> </layer-list> </item> </selector> </inset>

y en mi styles.xml lo uso de esta manera

<style name="DxSpinner" parent="@style/Widget.AppCompat.Spinner.Underlined"> <item name="android:background">@drawable/spinner_background</item> </style>


También puedes eliminar el relleno de spinner en xml.

Solo es necesario configurar el relleno a 0dp.

<Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="left" android:padding="0dp" android:id="@+id/my_spinner">