usar tutorial studio example como android android-layout material-design

tutorial - Estilo de Android Spinner Toolbar



material design android tutorial (3)

¿Cómo logro el diseño de material de spinner en caja de herramientas? He intentado lo siguiente, pero mi hilandero se ve así

<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="56dp" android:background="@color/main_color" app:contentInsetLeft="14dp" app:contentInsetRight="14dp" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/ThemeOverlay.AppCompat.ActionBar"> <Spinner android:id="@+id/spinner_nav" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </android.support.v7.widget.Toolbar>

Mi mínimo de SDK es de 15.

en mi onCreate

ButterKnife.inject(this); mToolbar.inflateMenu(R.menu.menu_login); mToolbar.setTitle(R.string.sign_in); mToolbar.setOnMenuItemClickListener(this); SpinnerAdapter spinnerAdapter = ArrayAdapter.createFromResource(this, R.array.options, android.R.layout.simple_spinner_dropdown_item); mSpinner.setAdapter(spinnerAdapter); mSpinner.setOnItemSelectedListener(this);

Un menú es una hoja de papel temporal que siempre se superpone a la barra de aplicaciones, en lugar de comportarse como una extensión de la barra de aplicaciones.

cualquier enlace sería de gran ayuda

ACTUALIZAR

He conseguido lo que quiero.

Usé esto

ButterKnife.inject(this); mToolbar.setTitle(R.string.sign_in); setSupportActionBar(mToolbar); SpinnerAdapter spinnerAdapter = ArrayAdapter.createFromResource(getSupportActionBar().getThemedContext(), R.array.options, android.R.layout.simple_spinner_dropdown_item); getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); getSupportActionBar().setListNavigationCallbacks(spinnerAdapter, this);

y mi xml

<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="56dp" android:background="@color/app_secondary_color" app:contentInsetLeft="14dp" app:contentInsetRight="14dp" app:popupTheme="@style/ThemeOverlay.AppCompat" app:theme="@style/ThemeOverlay.AppCompat.ActionBar"> </android.support.v7.widget.Toolbar>

Pero, ¿cómo lo hago blanco y el color del texto del menú es azul? También tengo este problema. Parece que está demasiado lejos? ¿Alguna forma de arreglar esta flecha desplegable?

Actualización 2

Bueno, después de pasar tanto tiempo intentando, he logrado cómo hacerlo en blanco y el color del texto en negro a través de esto. He creado mi diseño personalizado para el estilo desplegable

<?xml version="1.0" encoding="utf-8"?> <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:singleLine="true" android:layout_width="match_parent" android:background="@color/background_material_light" android:textColor="@color/abc_primary_text_material_light" android:layout_height="48dp" android:ellipsize="marquee"/>

luego agregué este código en mi oncreate

spinnerAdapter.setDropDownViewResource(R.layout.custom_simple_spinner_dropdown_item);

El único problema que encuentro ahora es que el estado de la prensa no funciona, es solo un avión blanco. Si ve en el otro menú emergente, al hacer clic en un elemento, el color de fondo se vuelve un poco más oscuro. También este ícono molesto está todavía muy lejos del texto.


Debe crear un recurso de lista de estados de color y aplicarlo como fondo para su CheckedTextView . En cuanto a que el icono de la flecha está demasiado lejos, AFAIK es debido a la longitud de los niños, llega hasta el niño más largo. Por lo tanto, no hay manera de personalizar eso.


Si desea que el estado de la prensa funcione, debe agregar un selector con posibilidad de dibujo en lugar de un color como fondo. Ejemplo de selector:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item> <item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item> <item android:drawable="@drawable/numpad_button_bg_normal"></item> </selector>


Pruebe este código para cambiar el color de la fuente del primer elemento o el color de fondo para Spinner

Spinner spinner = findViewById(R.id.spn); ArrayList<String> lst = new ArrayList<>(); lst.add("Android"); lst.add("Iphone"); lst.add("Windows"); ArrayAdapter<String> adapter = new ArrayAdapter<String >(getApplicationContext(),R.layout.spin_item,lst) { public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { View v = null; if (position == 0) { TextView tv = new TextView(getContext()); tv.setTextColor(Color.parseColor("#007f00")); v = tv; } else { v = super.getDropDownView(position, null, parent); } return v; } }; spinner.setAdapter(adapter);