Comment désactiver / masquer l’indicateur à trois points (indicateur de menu Option) sur les combinés ICS

Comment désactiver / masquer l’indicateur à trois points (indicateur de menu Option) sur les combinés ICS qui n’ont pas de bouton de menu. ?

Je cours l’application en tant que dans Manifest, le code est compilé avec 4.0 . Un indicateur à trois points apparaît sur chaque écran.

Exemple pour les activités de préférence, je ne veux pas afficher l’indicateur à trois points, car il n’a pas d’options de menu.

Ajouter android:targetSdkVersion="14" dans manifeste cela fonctionne. Cependant, ne voulez pas masquer / supprimer le bouton trois points sur tous les écrans. Seules les activités préférentielles ne veulent pas afficher ce bouton à trois points.

Remplacez onPrepareOptionsMenu() dans le fragment de la préférence par ceci:

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

Si vous avez plus d’un élément, définissez tous les indicateurs de visibilité sur false.

et ajoutez la commande setHasOptionsMenu(true); à la commande onCreate

après avoir défini toute la visibilité des éléments sur false, le menu disparaîtra

sur activité, la seule différence est que le onPrepareOptionsMenu est boolean et que vous n’avez pas besoin d’append le setHasOptionsMenu(true); commande sur la création

Je viens de supprimer la méthode:

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

alors ce menu à trois points disparaît (:

J’espère que cela aide.

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

Il n’y a aucun moyen d’afficher / masquer l’indicateur de menu “trois points” pour une seule activité. Vous pouvez masquer cet indicateur de menu uniquement pour l’application entière en spécifiant android: targetSdkVersion = “14” (ou supérieur) dans votre fichier manifeste.

Toutefois, cet indicateur de menu ne s’affiche pas sur l’activité des préférences s’il s’étend à partir de la classe android.preference.PreferenceActivity native. J’ai mis en place ce scénario dans quelques applications et cela fonctionne parfaitement.

Je suppose que vous utilisez des implémentations de préférences personnalisées qui ne vont pas de PreferenceActivity. Android Dev Team suggère de toujours utiliser PreferenceActivity pour toutes les préférences de vos applications.

Le code suivant a fonctionné pour mon application. Essayé sur Samsung Galaxy S4 (Android 4.3) et Nexus 4 (Android 4.2):

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

méthode de remplacement et retourne faux souvenir de ne pas appeler super

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

Supprimer cet élément dans res / menu / main.xml

  

De plus, n’ajoutez pas d’élément avec showAsAction="never" – cela évitera les points. Si vous avez plus d’éléments que vous ne pouvez pas afficher en une fois, les points seront à nouveau présents (et ce sont des éléments marqués ifRoom ).

Bien trop tard pour la fête ici, j’essayais de supprimer tous les éléments du menu et les 3 points (indicateur de menu d’options), j’ai fait différemment de la solution donnée ici, je suis surpris que personne ne l’ait dit. Il y a une balise de visibilité qui peut être définie sur false et aucune modification du code dans l’activité n’est requirejse. visibility=false

dans res / menu / ..

  

Vous pouvez effectivement changer la targetVersion Android, forçant ainsi le menu à 3 points à se cacher ou à afficher. Vous devez écraser surCréer votre activité comme ceci:

 @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); } 

Testé sur Android 4.xx et Android 3.0

Je viens d’exclure la méthode “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; } 

Je veux juste améliorer la réponse de @war_hero. Si vous voulez définir la visibilité à l’exécution Vous pouvez utiliser le paramètre de menu oncreateoptions comme ceci

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

puis créez une fonction pour afficher ou masquer un élément de menu en fonction de l’index. par exemple

 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); } 

Copiez collez ce code dans main.xml dans le dossier de menu, il vous suffit de rendre l’élément Android: visible = “false”

      

Devrait être:

  

Si MainActivity est

classe publique MainActivity étend AppCompatActivity

Dans la classe MainActivity, supprimez le code ci-dessous.

 @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); } 
 for hiding 3 dots in actionbar/ toolbar public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_dash_board_drawer, menu); return false; //for visible 3 dots change to true, hiding false } 

Fais-le comme ça.

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

Je vérifie si mon tiroir de navigation est visible. Je cacherai le menu et inversement. Vous pouvez l’utiliser selon vos besoins. J’espère que cela t’aides. Heureux codage. 🙂

C’est comme ça que je trouve une solution. C’est peut-être utile.

 @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); } 

Je viens d’utiliser

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

Où R.menu.main n’est qu’un menu vide xml

  

Si vous voulez simplement masquer le bouton, cette solution est un peu un hack mais fonctionne sur toutes les versions d’Android (en utilisant AppCompat) et n’affecte pas vos autres éléments de menu:

styles.xml

    

Si vous souhaitez que le bouton Dépassement ne soit masqué que sur certains écrans, vous pouvez en faire un autre thème (remplacez AppTheme ci-dessus par AppTheme.NoOverflow) que seules certaines activités utilisent:

AndroidManifest.xml

  

Cela fait que l'icône n'a ni largeur ni hauteur. Je recommande rarement les directives de conception opposées, mais dans mon scénario, nous avons utilisé un matériel dédié qui ne signalait pas correctement qu'un bouton de menu était présent.