Barra de acción de soporte de Android que no muestra el menú de desbordamiento

Mi aplicación Android es compatible con 2.2 y superior. Estoy usando la biblioteca de soporte appcompat para la barra de acción, por lo que sólo debe mostrar si hay cosas que no encajan. Quiero que mi barra de acción apoye el botón de desbordamiento (los tres cuadrados verticales) que revela un menú con los otros elementos cuando se hace clic.

En mi archivo de menú, tengo tres elementos configurados. Sin embargo, en la aplicación sólo veo dos de ellos, y el botón de desbordamiento no se muestra así.

Activity_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:sord.ids_connect="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_settings" android:icon="@drawable/checkbox" android:title="@string/action_settings" sord.ids_connect:showAsAction="ifRoom" /> <item android:id="@+id/action_settings2" android:icon="@drawable/checkbox_checked" android:title="@string/action_settings" sord.ids_connect:showAsAction="ifRoom" /> <item android:id="@+id/action_settings3" android:icon="@drawable/ic_launcher" android:title="@string/action_settings" sord.ids_connect:showAsAction="ifRoom" /> </menu> 

Archivo java

 import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; public class Activity_Menu extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu); ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_menu, menu); //return true; return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: super.onBackPressed(); return true; } return super.onOptionsItemSelected(item); } } 

manifiesto

  <activity android:theme="@style/Theme.AppCompat.Light.DarkActionBar" android:name="sord.ids_connect.Activity_Menu" android:screenOrientation="portrait" android:label="@string/title_activity_menu" > </activity> 

Referencia general

1 – Anular onCreateOption e inflar el menú

Nota

No importa si devuelve verdadero o llame a super

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

2 – Agregue el espacio de nombres al archivo menu.xml.

 xmlns:**yourapp**="http://schemas.android.com/apk/res-auto" 

3 – ajuste el showAsAction a always o ifRoom

 **yourapp**:showAsAction="ifRoom" 

4 – si está usando appcompat asegúrese de que Activity extends ActionBarActivity , no tiene que cambiar ningún valor de la ActionBar para poder verle menuOption en la barra.

Por último, tendrá algo como [recuerde que el usuario un espacio de nombres adecuado para yourapp ]

Main.xml

 <item android:id="@+id/action_settings" android:icon="@drawable/ic_action_settings" android:title="@string/action_settings" yourapp:showAsAction="ifRoom" /> 

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.main, menu); return super.onCreateOptionsMenu(menu); } 

Si está utilizando la biblioteca de soporte, tendrá que declarar el showAsAction desde su propio espacio de nombres; Que se verá como esta app:showAsAction . Puede referirse a la respuesta de eOnOe para esto.

Uso de android:showAsAction no funcionará con la biblioteca de soporte porque utiliza su propia implementación de la barra de acción en lugar de la implementación del framework.

También puede agrupar elementos en el icono, por ejemplo:

 <item ... android:icon="@drawable/abs__ic_menu_moreoverflow_holo_dark"> <menu> <item .../> <item .../> </menu> </item> 

Android show overflow menu sólo si el dispositivo no tiene botón de menú. Por supuesto, puede crear hack a hacerlo por defecto para todos los dispositivos, pero no es la solución recomendada. Y para todos sus elementos, agregue android:showAsAction="never" y esto dice que su dispositivo muestra el menú de desbordamiento si no tiene el botón de menú.

Im pruebas en mi teléfono, y cuando presiono el botón de menú, veo el menú aparece en la parte inferior con sólo una opción que dice "Configuración"

Ese es el desbordamiento.

También por qué sólo hay 1 opciones que aparecen allí cuando tengo 3 elementos en el archivo de menú?

Porque los otros dos están en la barra de acción. Usted especificó ifRoom , y había espacio para dos, no para tres.

  Change Your menu.xml with the following code. <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:sord.ids_connect="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_container" android:title="Menu" android:showAsAction="always"> <item android:id="@+id/action_settings" android:icon="@drawable/checkbox" android:title="@string/action_settings" android:showAsAction="always"/> <item android:id="@+id/action_settings2" android:icon="@drawable/checkbox_checked" android:title="@string/action_settings" android:showAsAction="always" /> <item android:id="@+id/action_settings3" android:icon="@drawable/ic_launcher" android:title="@string/action_settings" android:showAsAction="always" /> </item> </menu> 

Debe mencionar el diseño del menú como se muestra a continuación

 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:sord.ids_connect="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_container" android:title="Menu" android:showAsAction="never"> <item android:id="@+id/action_settings" android:icon="@drawable/checkbox" android:title="@string/action_settings" sord.ids_connect:showAsAction="ifRoom" /> <item android:id="@+id/action_settings2" android:icon="@drawable/checkbox_checked" android:title="@string/action_settings" sord.ids_connect:showAsAction="ifRoom" /> <item android:id="@+id/action_settings3" android:icon="@drawable/ic_launcher" android:title="@string/action_settings" sord.ids_connect:showAsAction="ifRoom" /> </item> </menu> 

Yo tuve el mismo problema. Lo resolví por:

1) commenting return true;

2) return super.onKeyUp(keyCode, event);

En public boolean onKeyUp(int keyCode, KeyEvent event)

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.