Cómo deshabilitar / ocultar el indicador de tres puntos (indicador de menú opcional) en los teléfonos ICS

Cómo deshabilitar / ocultar el indicador de tres puntos (Indicador de menú opcional) en los teléfonos ICS que no tiene botón de menú. ?

Estoy ejecutando la aplicación como <uses-sdk android:minSdkVersion="5"/> en Manifest, el código se compila con 4.0 . El indicador de tres puntos aparece en cada pantalla.

Ejemplo para actividades de preferencia que no quiero mostrar Indicador de tres puntos, ya que no tiene opciones de menú.

Añadir android:targetSdkVersion="14" en el manifiesto funciona. Sin embargo no quiero ocultar / quitar tres puntos botón en todas las pantallas. Sólo en las actividades de preferencia no quiere mostrar este botón de tres puntos.

onPrepareOptionsMenu() en el fragmento de la preferencia con esto:

 @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem item= menu.findItem(R.id.menu_settings); item.setVisible(false); super.onPrepareOptionsMenu(menu); return true; } 

Si tiene más de un elemento, defina todo el indicador de visibilidad de elementos como false

Y agregue el comando setHasOptionsMenu(true); onCreate comando onCreate

Después de configurar toda la visibilidad de los elementos a false el menú desaparecerá

En la actividad, la única diferencia es el onPrepareOptionsMenu es boolean y usted no necesita agregar el setHasOptionsMenu(true); Comando en la creación

Acabo de eliminar el método:

 @Override public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { getSupportMenuInflater().inflate(R.menu.main, menu); return true; } 

Entonces ese menú de tres puntos desaparece (:

Espero eso ayude.

  @Override public boolean onCreateOptionsMenu(Menu menu) { return false; } 

No hay forma de mostrar / ocultar el indicador de menú "tres puntos" para una sola actividad. Puede ocultar este indicador de menú sólo para toda la aplicación especificando android: targetSdkVersion = "14" (o superior) en su archivo de manifiesto.

Sin embargo, este indicador de menú no se muestra en la actividad de preferencias si se extiende desde la clase android.preference.PreferenceActivity nativa. Tengo este escenario implementado en algunas de mis aplicaciones, y funciona perfectamente.

Supongo que está utilizando algunas implementaciones de preferencias personalizadas que no se extiende desde PreferenceActivity. Android Dev Team sugiere utilizar siempre PreferenceActivity para cualquier preferencia en sus aplicaciones.

El siguiente código funcionó para mi aplicación. Probado en Samsung Galaxy S4 (Android 4.3) y Nexus 4 (Android 4.2):

 @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem item= menu.findItem(R.id.action_settings); item.setVisible(false); return true; } 

Elimine este elemento en res / menu / main.xml

 <item android:id="@+id/action_settings" android:orderInCategory="100" android:showAsAction="never" android:title="@string/action_settings"/> 

Además: no agregue un elemento que tenga showAsAction="never" – esto evitará que los puntos showAsAction="never" . Si tiene más elementos que no se pueden mostrar de inmediato, los puntos volverán a aparecer (y son elementos marcados ifRoom ).

Reemplazar el método y devolver el error recordar de no llamar super

  @Override public boolean onCreateOptionsMenu(Menu menu) { return false; } 

En realidad, puede cambiar la versión de destino de Android forzando así el menú de 3 puntos para ocultar o mostrar. Necesita anular la creación de su actividad de la siguiente manera:

 @Override public void onCreate(Bundle savedInstanceState) { getApplicationInfo().targetSdkVersion = 10; // To enable the 3-dot menu call this code before super.OnCreate super.onCreate(savedInstanceState); } @Override public void onCreate(Bundle savedInstanceState) { getApplicationInfo().targetSdkVersion = 14; // To disable the 3-dot menu call this code before super.OnCreate super.onCreate(savedInstanceState); } 

Probado en Android 4.xx y Android 3.0

Acabo de excluir el método "onCreateOptionsMenu":

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

Demasiado tarde para la fiesta aquí, estaba tratando de eliminar todos mis elementos de menú y los 3 puntos (indicador de menú de opción), lo hice de manera diferente a la solución dada aquí me sorprende que nadie lo había dicho. Hay una etiqueta de visibilidad que se puede establecer en falso y no se requiere cambio de código en la actividad visibility=false hace el truco

En res / menu / ..

 <item android:id="@+id/action_settings" android:orderInCategory="100" android:showAsAction="never" visibility=false android:title="@string/action_settings"/> 

Debiera ser:

 <item android:id="@+id/linearlayout_splash" android:orderInCategory="100" android:showAsAction="never" android:visible="false" android:title="@string/action_settings"/> 

Si MainActivity es

Public class MainActivity extiende AppCompatActivity

En MainActivity Class, elimine el código siguiente.

 @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; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } 

Copiar pegar este código en main.xml en la carpeta de menú que sólo tiene que hacer el elemento android: visible = "false"

  <?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_settings" android:orderInCategory="100" android:visible="false" android:title="@string/action_settings" app:showAsAction="never" /> </menu> 

Hazlo asi.

 @Override public boolean onPrepareOptionsMenu(Menu menu) { // if nav drawer is opened, hide the action items boolean drawerOpen = mDrawerLayout.isDrawerOpen(leftDrawer); return (!drawerOpen); } 

Estoy comprobando si mi cajón de navegación es visible Voy a ocultar el menú y viceversa. Usted puede utilizarlo según usted requisito. Espero que esto ayude. Codificación feliz. 🙂

Así es como encuentro una solución mía. Quizás sea útil.

 @Override public boolean onKeyDown(int keycode, KeyEvent event ) { //KEYCODE_MENU if(keycode == KeyEvent.KEYCODE_MENU){ /* AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this) .setMessage("Test") .setTitle("Menu dialog"); dialogBuilder.create().show();*/ return true; // finish(); } return super.onKeyDown(keycode,event); } 

Acabo de usar

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

Donde R.menu.main es sólo un menú vacío xml

 <menu xmlns:android="http://schemas.android.com/apk/res/android" ></menu> 

Si simplemente desea ocultar el botón, esta solución es un poco hack, pero funciona en todas las versiones de Android (con AppCompat) y no afecta a los otros elementos del menú:

Styles.xml

 <style name="AppTheme" parent="Theme.AppCompat.Light"> ... <item name="android:actionOverflowButtonStyle">@style/AppTheme.Overflow</item> <!-- If you're using AppCompat, instead use --> <item name="actionOverflowButtonStyle">@style/AppTheme.Overflow</item> </style> <style name="AppTheme" /> <style name="AppTheme.Overflow"> <item name="android:src">@null</item> </style> 

Si desea que el botón de desbordamiento se oculte sólo en algunas pantallas, podría convertirlo en un tema alternativo (cambie AppTheme anterior a AppTheme.NoOverflow) que sólo utilizan ciertas actividades:

AndroidManifest.xml

 <activity android:name=".NoOverflowActivity" android:theme="@style/AppTheme.NoOverflow" > 

Esto efectivamente hace que el icono no tiene anchura y altura. Rara vez recomiendo orientaciones de diseño opuestas, pero en mi escenario utilizamos hardware dedicado que no informó correctamente un botón de menú estaba presente.

Sólo quiero mejorar @war_hero respuesta. Si desea establecer la visibilidad en tiempo de ejecución Puede utilizar parámetro de menú de oncreateoptions como este

 Menu overflow; @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.mymenu, menu); this.overflow = menu; return super.onCreateOptionsMenu(menu); } 

Y luego hacer una función para mostrar u ocultar cualquier elemento de menú de acuerdo con el índice. Por ejemplo

 public void hideorShowMenuItems(boolean bool){ overflow.getItem(1).setVisible(bool); overflow.getItem(2).setVisible(bool); overflow.getItem(3).setVisible(bool); overflow.getItem(4).setVisible(bool); overflow.getItem(5).setVisible(bool); } 
  • Cómo hacer que mi proyecto sea compatible con diferentes versiones de sdk mientras utiliza funciones para una versión específica
  • ¿Qué hay de malo con el tema del diálogo ICS Holo?
  • Emulador de Android 4.0 no se iniciará
  • No se puede utilizar el nuevo marco de Android VpnService 4.0
  • Android 4.0 ICS que convierte peticiones GET de HttpURLConnection en solicitudes de POST
  • Cómo utilizar el widget de NumberPicker Android 4.0
  • Referencia indirecta no válida en la llamada NewObject
  • WebView, mostrando en blanco en ICS
  • ¿Por qué INSERTs y UPDATEs son más lentos en Android 4.0?
  • CORRUPCIÓN DE MEMORIA HEAP EN los errores dlmalloc o dlfree y SIGSEGV en Android ICS 4.0
  • Android - botón del menú de la demostración en el nexo de la galaxia
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.