studio personalizar notificaciones navegacion estado como color cambiar barra baja aparece activar android xml

personalizar - Cómo configurar el menú a la barra de herramientas en Android



como activar la barra de notificaciones en android (9)

No use setSupportActionBar (barra de herramientas)

No sé por qué, pero esto funciona para mí.

toolbar = (Toolbar) findViewById(R.id.main_toolbar); toolbar.setSubtitle("Test Subtitle"); toolbar.inflateMenu(R.menu.main_manu);

Para el elemento del menú, haga clic en hacer esto

toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if(item.getItemId()==R.id.item1) { // do something } else if(item.getItemId()== R.id.filter) { // do something } else{ // do something } return false; } });

Actualizaré la parte ''por qué'' de esta respuesta cuando encuentre una explicación adecuada.
Feliz de ayudar de todos modos :) Paz.

¡Quiero usar ToolBar lugar de ActionBar , pero no me muestre el menú en la barra de herramientas! Quiero configurar el menú, como Actualizar o Configurar botones en ActionBar .

Código Toolbar.xml:

<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize" app:navigationContentDescription="@string/abc_action_bar_up_description" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:title="Main Page" android:gravity="center"/>

Código MainPage.java:

public class MainPage extends AppCompatActivity { private Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_page); toolbar = (Toolbar) findViewById(R.id.main_toolbar); setSupportActionBar(toolbar); if (getSupportActionBar() != null) { getSupportActionBar().setTitle("Main Page"); } toolbar.setSubtitle("Test Subtitle"); toolbar.inflateMenu(R.menu.main_manu); } }

Código main_menu.xml:

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/menu_main_setting" android:icon="@drawable/ic_settings" android:orderInCategory="100" app:showAsAction="always" android:actionLayout="@layout/toolbar" android:title="Setting" /> <item android:id="@+id/menu_main_setting2" android:icon="@drawable/ic_settings" android:orderInCategory="200" app:showAsAction="always" android:actionLayout="@layout/toolbar" android:title="Setting" /> </menu>

¿Cómo solucionar este problema y mostrar el menú en la Toolbar de Toolbar ? gracias a todos queridos <3


Aquí hay una respuesta más completa como referencia para futuros visitantes. Por lo general, uso una barra de herramientas de soporte, pero funciona igual de cualquier manera.

1. Hacer un menú xml

Esto va a estar en res/menu/main_menu .

  • Haga clic derecho en la carpeta res y elija Nuevo> Archivo de recursos de Android .
  • Escriba main_menu para el nombre del archivo.
  • Elija Menú para el Tipo de recurso.

Pegue el siguiente contenido como entrante.

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_add" android:icon="@drawable/ic_add" app:showAsAction="ifRoom" android:title="Add"> </item> <item android:id="@+id/action_settings" app:showAsAction="never" android:title="Settings"> </item> </menu>

Puede hacer clic con el botón derecho en res y elegir Nuevo recurso de imagen para crear el icono ic_add .

2. Inflar el menú

En su actividad agregue el siguiente método.

@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); return true; }

3. Manejar los clics del menú

También en su Actividad, agregue el siguiente método:

@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { case R.id.action_add: addSomething(); return true; case R.id.action_settings: startSettings(); return true; default: return super.onOptionsItemSelected(item); } }

Otras lecturas


Aunque estoy de acuerdo con esta respuesta, ya que tiene menos líneas de código y funciona:

Cómo configurar el menú a la barra de herramientas en Android

Mi sugerencia sería iniciar siempre cualquier proyecto utilizando el Asistente de Android Studio. En ese código encontrarás algunos estilos: -

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

y el uso es:

<android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout>

Debido a que no action bar theme declarado no action bar theme en styles.xml , que se aplica a la Main Activity en AndroidManifest.xml , no hay excepciones, por lo que debe verificarlo allí.

<activity android:name=".MainActivity" android:screenOrientation="portrait" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

  1. La Toolbar no es una entidad independiente, siempre es una vista secundaria en AppBarLayout que nuevamente es hija de CoordinatorLayout .
  2. El código para crear un menú es el código estándar desde el primer día, que se repite una y otra vez en todas las respuestas, particularmente la marcada, pero nadie se dio cuenta de cuál es la diferencia.

AMBOS:

Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar);

Y:

Cómo configurar el menú a la barra de herramientas en Android

TRABAJARÁ.

Happy Coding :-)


En mi caso, estoy usando un AppBarLayout con un CollapsingToolbarLayout y el menú siempre se desplazaba fuera de la pantalla, resolví mi problema cambiando android: actionLayout en el XML del menú a la ID de la barra de herramientas. ¡Espero que pueda ayudar a las personas en la misma situación!

activity_main.xml

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:fab="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".activities.MainScreenActivity" android:screenOrientation="portrait"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="300dp" app:elevation="0dp" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsingBar" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_scrollFlags="exitUntilCollapsed|scroll" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginStart="48dp" app:expandedTitleMarginEnd="48dp" > <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:elevation="0dp" app:popupTheme="@style/AppTheme.PopupOverlay" app:layout_collapseMode="pin"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout>

main_menu.xml

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/logoutMenu" android:orderInCategory="100" android:title="@string/log_out" app:showAsAction="never" android:actionLayout="@id/toolbar"/> <item android:id="@+id/sortMenu" android:orderInCategory="100" android:title="@string/sort" app:showAsAction="never"/> </menu>


En su actividad, anule este método.

@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_menu, menu); return true; }

Esto inflará tu menú a continuación:

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/menu_main_setting" android:icon="@drawable/ic_settings" android:orderInCategory="100" app:showAsAction="always" android:actionLayout="@layout/toolbar" android:title="Setting" /> <item android:id="@+id/menu_main_setting2" android:icon="@drawable/ic_settings" android:orderInCategory="200" app:showAsAction="always" android:actionLayout="@layout/toolbar" android:title="Setting" /> </menu>


Necesita anular este código en su Actividad:

@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu, this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main2, menu); return true; }

y configura tu barra de herramientas de esta manera:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);


También necesita esto, para implementar alguna acción en cada opción de menú.

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_help: Toast.makeText(this, "This is teh option help", Toast.LENGTH_LONG).show(); break; default: break; } return true; }


Una solución simple a esto fue configurar showAsAction para always en menu.xml en res / menu

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/add_alarm" android:icon="@drawable/ic_action_name" android:orderInCategory="100" android:title="Add" app:showAsAction="always" android:visible="true"/> </menu>


simplemente anule onCreateOptionsMenu como este en su MainPage.java

@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main_menu, menu); return true; }