Cómo mover la flecha giratoria de Android Spinner más cerca de la que está emitiendo texto
Necesito establecer la flecha de desplegable más cerca de su elemento de texto emisor en Spinner
. ¿Cómo lograrlo?
<Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" />
- MaterialBetterSpinner FloatingLabel de forma dinámica o programática
- Spinner dropdown dibujo de la parte superior de la pantalla en listview después de seleccionar el elemento
- Android Spinner OnItemSelected no se llama con el mismo elemento
- ¿Cómo puedo añadir mi spinner a la ActionBar?
- Establecer TextSize a un texto en spinner en android programatically
- Set onClickListener para el elemento spinner?
- ¿Cómo pasar datos de spinner de una actividad a otra?
- Android - Cómo mostrar un spinner con valor pero mostrar otro diferente
- Lanzamiento de hilanderos en android
- Hacer clic en el elemento giratorio dentro de la ventana emergente causa WindowManager $ BadTokenException
- Cómo quitar el borde blanco por defecto de la lista desplegable del hilandero
- Android Spinner - ¿Cómo hacer que la vista desplegable sea transparente?
- Android: se centra en EditText después de la selección de Spinner
Puede solucionar esto definiendo un fondo personalizado en xml y, a continuación, estableciendo el margen de la flecha desde el lado derecho.
Comience por definir una lista de capas con un fondo de rectángulo y un objeto de mapa de bits para la flecha. Puede hacer que la flecha se alinee con el centro en el lado derecho estableciendo su gravedad, y puede moverla hacia el centro estableciendo su margen derecho a través del atributo android: "right". Tenga en cuenta que esto no moverá dinámicamente la flecha en función de la longitud del texto, pero debería ser un primer paso útil.
Spinner_background.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/color_white" /> <corners android:radius="2.5dp" /> </shape> </item> <item android:right="64dp"> <bitmap android:gravity="right|center_vertical" android:src="@drawable/ic_spinner" </bitmap> </item> </layer-list>
Esto se puede lograr creando un diseño personalizado para el elemento de hilandero seleccionado custom_spinner_item.xml. He añadido un TextView que muestra el elemento giratorio seleccionado actualmente. El icono de flecha se agrega en un ImageView. Puede utilizar cualquier icono. El icono de la flecha se mueve dependiendo de la longitud del texto que no sea alcanzada por la respuesta de TheoKanning . De hecho, puede modificar completamente el aspecto de su hiladora en este diseño.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:orientation="horizontal"> <TextView android:id="@+id/spinner_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:paddingLeft="10dp" android:paddingRight="10dp"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:src="@mipmap/ic_arrow_down"/> </LinearLayout>
Cree un adaptador giratorio personalizado e infle la vista anterior. También establezca el texto de su elemento de hilandero seleccionado de su lista reemplazando el método getView () predeterminado.
public class CustomSpinnerAdapter extends ArrayAdapter<String> { LayoutInflater inflater; List<String> spinnerItems; public CustomSpinnerAdapter(Context applicationContext, int resource, List<String> spinnerItems) { super(applicationContext, resource, spinnerItems); this.spinnerItems = spinnerItems; inflater = (LayoutInflater.from(applicationContext)); } @Override public View getView(int i, View view, ViewGroup viewGroup) { view = inflater.inflate(R.layout.custom_spinner_item, null); TextView type = (TextView) view.findViewById(R.id.spinner_item_text); type.setText(spinnerItems.get(i)); return view; } }
A continuación instancia la clase CustomSpinnerAdapter y establezca como el adaptador de su hilandero. SpinnerList es la lista de elementos que se mostrarán en la ruleta.
CustomSpinnerAdapter customSpinnerAdapter = new CustomSpinnerAdapter(getContext(), android.R.layout.simple_spinner_item, spinnerList); spinner.setAdapter(customSpinnerAdapter);
1) Set the background of spinner to @null <Spinner android:id="@+id/spinner" android:background="@null" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 2) In the spinner adapter layout, create an Imageview to the right of Textview or whatever content is in there change the visibility of the imageview to "gone" 3)Override the onItemSelected method of the spinner in your activity, in the onItemSelected method, call the Imageview ImageView downArrow = (ImageView) view.findViewById(R.id.down_arrow); change its visibility to "visible"
- Aplicación de Android Run de la última actividad
- ¿Cuál es la mejor manera de guardar el contenido de una ArrayList?