recuperar - Menú de la barra de herramientas de Android no se muestra
personalizar barra de estado android (13)
¿Tienes barra de herramientas en el diseño de tu panel de control? Llame a setSupportActionBar (barra de herramientas) en su actividad. Use el tema Theme.AppCompat.NoActionBar para las actividades (si está usando una barra de herramientas)
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
public class DashboardActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.dashboard, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Revisa tus estilos.
<resources>
<!-- Base application theme. -->
<style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:windowBackground">@color/white</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme" parent="AppTheme.Base">
</style>
<style name="ToolbarTheme" parent="AppTheme" >
</style>
<color name="light">#FFBB33</color>
<color name="colorPrimary">#FFBB33</color>
<color name="textColorPrimary">#FFBB33</color>
<color name="colorPrimaryDark">#FF8800</color>
<color name="colorAccent">#ff9977</color>
<color name="white">#ffffff</color>
</resources>
Revise su diseño.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/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:minHeight="?attr/actionBarSize"
app:titleMarginStart="20dp"
android:paddingRight="10dp"
android:background="@color/colorPrimaryDark"
app:theme="@style/ToolbarTheme" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="Hello Toolbar" />
</LinearLayout>
Añadir tema en tu actividad en manifiesto.
android:theme="@style/AppTheme"
Estoy tratando de agregar un menú a la barra de herramientas. onCreateOptionsMenu
método onCreateOptionsMenu
de mi Activity
, pero no aparece ningún menú.
Esto es dashboard.xml (de la carpeta del menú)
<?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"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.app.android.ui.dashboard.DashboardActivity">
<item
android:id="@+id/action_scan_qr"
android:icon="@drawable/ic_drawer"
android:title="@string/menu_scan_qr"
app:showAsAction="always" />
</menu>
NOTA: el icono de este menú es más oscuro que el color de fondo de la barra de acción, por lo que debería estar visible.
Inflar menú en actividad:
public class DashboardActivity extends ActionBarActivity {
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
getMenuInflater().inflate(R.menu.dashboard, menu);
return true;
}
Y el tema principal para la aplicación:
<style name="Theme.Application.Base" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@android:color/white</item>
<item name="colorPrimaryDark">@android:color/white</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="drawerArrowStyle">@style/Theme.Application.DrawerArrowStyle</item>
<item name="android:textColorSecondary">@android:color/darker_gray</item>
</style>
Por onCreateOptionsMenu
se llama onCreateOptionsMenu
pero no aparece el menú. Estoy usando appcompat-v7:21.0.3
EDITAR:
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentViewId());
toolbar = (Toolbar) findViewById(R.id.tool_bar);
if (toolbar == null) {
throw new Error("Can''t find tool bar, did you forget to add it in Activity layout file?");
}
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
Agregue el icono que desee en la carpeta mipmap
Cree menu_analysis.xml (en la carpeta de menú values.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"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.app.android.ui.dashboard.DashboardActivity">
<item
android:id="@+id/action_scan_qr"
android:icon="@mipmap/ic_menu_options"
android:title=""
app:showAsAction="always" />
</menu>
Ahora onPrepareOptionMenu bajo su clase de Java
@Override
public boolean onPrepareOptionsMenu(final Menu menu) {
getMenuInflater().inflate(R.menu.menu_analysis, menu);
return super.onCreateOptionsMenu(menu);
}
Aunque la respuesta aceptada funciona, hace que los elementos de mi menú se representen dos veces. Como acabo de resolver esto, intente algunas cosas como:
- recuerde
return true;
en lugar desuper.onCreateOptionsMenu(menu);
- recuerde configurar la barra de acciones de soporte
setSupportActionBar(findViewById(R.id.toolbar))
- Es posible que desee desactivar el título predeterminado de la aplicación si usa una barra de herramientas personalizada:
getSupportActionBar().setDisplayShowTitleEnabled(false)
El problema se resolvió cuando lo cambié a app: showAsAction a android: showAsAction
En mi caso fue estúpido simple. Mi barra de herramientas era hija de AppBarLayout y, por alguna razón, cuando estaba configurando una barra de herramientas con diseño de restricciones, el parámetro xml layout_width de la barra de herramientas estaba configurado en 0dp. Así que la barra de herramientas estaba allí, pero invisible ... (> _ <)
Por lo tanto, si nada de lo de arriba te ayudó, solo verifica los parámetros "layout_width" y "layout_height".
Espero que esto ahorre el tiempo de alguien :)
Intenta cambiar:
....
xmlns:app="http://schemas.android.com/apk/res-auto" >
....
app:showAsAction="ifRoom"
a:
....
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
....
yourapp:showAsAction="ifRoom"
https://developer.android.com/training/basics/actionbar/adding-buttons.html
Intenta lo siguiente:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.example.lolipoptest.MainActivity" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
</menu>
y el código de 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);
return true;
}
No estoy seguro de por qué, pero cuando coloco todo el menú relacionado en el método onPrepareOptionsMenu, todo funciona bien.
@Override
public boolean onPrepareOptionsMenu(final Menu menu) {
getMenuInflater().inflate(R.menu.dashboard, menu);
return super.onCreateOptionsMenu(menu);
}
Si está inflando su menú desde un fragmento, por ejemplo, anulando el método onCreateOptionsMenu
, asegúrese de llamar a setHasOptionsMenu(true)
en onCreateView
de su fragmento
Si está utilizando una Toolbar
, debe establecerla como la barra de acción de soporte en onCreate
:
setSupportActionBar(toolbar);
También estaba enfrentando el mismo problema, pero el error real fue que olvidé introducir la barra de herramientas en la actividad java
en AppCompactActivity
, en el método de creación, defina su barra de herramientas por id y llame a setSupportActionBar(ToolBar);
El siguiente ejemplo es:
public class secondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Use setSupportActionBar (barra de herramientas) en el método onCreate.
Ustedes lo están haciendo mal. necesita inflar su menú en onCreateOptionsMenu de la actividad:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.mymenu, menu);
return super.onCreateOptionsMenu(menu);
}