lollipop linterna caracteristicas aparece android android-5.0-lollipop android-toolbar

linterna - android lollipop caracteristicas



Lollipop de Android, agrega un menú emergente desde el título en la barra de herramientas (2)

Me encontré con esta pregunta mientras intentaba encontrar una solución para evitar que el menú emergente se superponga al girador y me gustaría dejar aquí una solución alternativa a esta pregunta, ya que es posible agregar el girador a la barra de herramientas utilizando menu.xml como bien

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorAccent" /> </android.support.design.widget.AppBarLayout> <!-- Other layout widgets --> </LinearLayout>

menu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/spinner" android:title="Spinning" app:actionViewClass="android.widget.Spinner" app:showAsAction="always" /> <!-- Other items --> </menu>

Su actividad

Será necesario anular el método onCreateOptionMenu () , luego usar getMenuInflater () para inflar el archivo de menú creado anteriormente.

También deberá obtener el elemento Spinner y configurar un adaptador como lo haría normalmente.

@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); //Get Spinner item from menu MenuItem spinnerMenuItem = menu.findItem(R.id.spinner); final Spinner spinner = (Spinner) MenuItemCompat.getActionView(spinnerMenuItem); //Set adapter whichever way you prefer (from the resource or manually) final ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter .createFromResource(this, R.array.items_array, android.R.layout.simple_spinner_dropdown_item); spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(spinnerAdapter); return true; }

Style.xml

Por último, si quieres personalizar tu hilandero.

<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:spinnerStyle">@style/spinner_style</item> </style> <style name="spinner_style" parent="Widget.AppCompat.Spinner"> <item name="android:dropDownVerticalOffset">40dip</item> <!--<item name="android:dropDownHorizontalOffset">0dip</item>--> <item name="overlapAnchor">false</item> <!--Other customizations--> </style>

No puedo ver cómo se logra agregar un menú emergente desde el título, como se muestra en muchos de los ejemplos de diseño de materiales. Cualquier ayuda sería muy apreciada.


Vas a necesitar agregar un Spinner a la barra de herramientas:

<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_height="?attr/actionBarSize" android:layout_width="match_parent" android:background="?attr/colorPrimary"> <Spinner android:id="@+id/spinner_nav" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </android.support.v7.widget.Toolbar>

A continuación, deberá desactivar el título predeterminado:

Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowTitleEnabled(false);

Luego puede recuperar y configurar el Spinner según sea necesario en su Actividad / Fragmento.