¡Quiero usar en ToolBar
lugar de ActionBar
, pero no me muestre el menú en la barra de herramientas! Quiero establecer un 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 Toolbar
? gracias a todos los queridos <3
Android Studio
y compruébelo. 'ToolBar' no debería ser una entidad independiente.Respuestas:
simplemente anule onCreateOptionsMenu así en su MainPage.java
fuente
No use setSupportActionBar (barra de herramientas)
No sé por qué, pero esto funciona para mí.
Para el elemento del menú, haga clic en hacer esto
fuente
Aquí hay una respuesta más completa como referencia para futuros visitantes. Normalmente uso una barra de herramientas de soporte, pero funciona igual de bien de cualquier manera.
1.Haz un menú xml
Esto va a estar en
res/menu/main_menu
.res
carpeta y elija Nuevo> Archivo de recursos de Android .main_menu
el nombre del archivo.Pegue el siguiente contenido como iniciador.
Puede hacer clic con el botón derecho
res
y elegir Nuevo activo de imagen para crear elic_add
icono.2. Inflar el menú
En su actividad agregue el siguiente método.
3. Controlar los clics del menú
También en su Actividad, agregue el siguiente método:
Otras lecturas
fuente
Necesita anular este código en su actividad:
y configura tu barra de herramientas así:
fuente
También necesita esto, para implementar alguna acción en todas las opciones del menú.
fuente
Aunque estoy de acuerdo con esta respuesta, ya que tiene menos líneas de código y funciona:
Cómo configurar el menú en la barra de herramientas en Android
Mi sugerencia sería comenzar siempre cualquier proyecto usando 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:
Debido a
no action bar theme
declarado enstyles.xml
, que se aplica alMain Activity
en elAndroidManifest.xml
, no hay excepciones, por lo que hay que comprobarlo allí.Toolbar
es una entidad independiente, siempre es una vista secundaria en laAppBarLayout
que de nuevo es hija deCoordinatorLayout
.AMBOS:
Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar);
Y:
Cómo configurar el menú en la barra de herramientas en Android
TRABAJARÁ.
Codificación feliz :-)
fuente
En su actividad, anule este método.
Esto inflará su menú a continuación:
fuente
En mi caso, estoy usando un AppBarLayout con CollapsingToolbarLayout y el menú siempre se desplazaba fuera de la pantalla, resolví mi problema cambiando android: actionLayout en el XML del menú a la identificación de la barra de herramientas. ¡Espero que pueda ayudar a personas en la misma situación!
activity_main.xml
main_menu.xml
fuente
Solución simple a este se ponía
showAsAction
aalways
enmenu.xml
en res / menúfuente
res / layout / drawer_menu
toolbar.xml
fuente
Bueno, necesitas configurar la barra de acción de soporte setSupportActionBar (); y pasa tu variable, así:
setSupportActionBar(toolbar);
fuente
En XML, agregue una línea dentro
<Toolbar/>
En el archivo java, reemplace esto:
con este:
fuente
Aún puede usar la respuesta proporcionada usando Toolbar.inflateMenu incluso mientras usa setSupportActionBar (barra de herramientas).
Tuve un escenario en el que tuve que mover la funcionalidad de configuración de la barra de herramientas a una clase separada fuera de la actividad que por sí sola no conocía el evento enCreateOptionsMenu.
Entonces, para implementar esto, todo lo que tuve que hacer fue esperar a que se dibujara la barra de herramientas antes de llamar a inflateMenu haciendo lo siguiente:
Puede que no se considere muy limpio, pero aún así hace el trabajo.
fuente