studio ejemplo create android spinner android-spinner titlebar android-titlebar

android - ejemplo - Cambiar Spinner DropDown ancho



spinner layout android (2)

Necesito cambiar el tamaño de este tamaño de pieza para mostrarlo por completo. ¿Cómo puedo hacer esto?

Mi adaptador

String[] navigations = getResources().getStringArray(R.array.actionBar); ArrayAdapter<String> adapter = new ArrayAdapter<String>( getBaseContext(), R.layout.custom_spinner_title_bar, android.R.id.text1, navigations); adapter.setDropDownViewResource(R.layout.custom_spinner_title_bar); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); actionBar.setListNavigationCallbacks(adapter, navigationListener);

custom_spinner_title_bar.xml:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="fill_horizontal" android:orientation="vertical" > <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="5dip" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#FFFFFF" /> </RelativeLayout>


Añadir atributo en el archivo xml en la etiqueta Spinner

android:dropDownWidth="150dp"


Lo que debe hacer es usar un adaptador personalizado para el menú desplegable en lugar del predeterminado, donde establece el "ancho mínimo" de cada "fila" para lo que desee:

private class myCustomAdapter extends ArrayAdapter{ private List<String> _navigations; private int _resource; private int _textViewResourceId; public myCustomAdapter (Context context, int resource, int textViewResourceId, List<String> objects) { super(context, resource, textViewResourceId, objects); _navigations = objects; _resource = resrouce; _textViewResourceId = textViewResourceId; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent){ View row; LayoutInflater inflater=getLayoutInflater(); row = inflater.inflate(_resource, null); TextView _textView = row.findViewById(_textViewResourceId); _textView.setText(_navigations.get(position)); Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int _width = size.x; row.setMinimumWidth = _width; return row; } }

Por supuesto, puedes jugar con "mínimo ancho" para ser lo que quieras; En este ejemplo, solo está configurado para coincidir con el ancho de la pantalla (aunque un enfoque más inteligente sería medir el marco contenedor de la aplicación y hacerlo coincidir).

Luego para configurar el adaptador:

myCustomAdapter adapter = new myCustomAdapter(getBaseContext(), R.layout.custom_spinner_title_bar,android.R.id.text1, navigations);