如何禁用/隐藏ICS手持机上的三点指示灯(选项菜单指示灯)

如何禁用/隐藏没有菜单button的ICS手机上的三点指示器(选项菜单指示灯)。 ?

我在Manifest中以<uses-sdk android:minSdkVersion="5"/>运行应用程序,代码是用4.0编译的。 每个屏幕上都显示三点指示。

偏好活动示例我不想显示三点指示符,因为它没有任何菜单选项。

在清单中添加android:targetSdkVersion="14" 。 但是,不要在所有屏幕上隐藏/删除三个点button。 只有在偏好活动不希望显示这三个点button。

使用以下命令覆盖偏好片段中的onPrepareOptionsMenu()

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

如果有多个项目将所有项目可见性标志设置为false

并添加命令setHasOptionsMenu(true);onCreate命令

在将所有项目的可见性设置为false后,菜单将消失

在活动上,唯一的区别是onPrepareOptionsMenuboolean ,你不需要添加setHasOptionsMenu(true); 命令的创build

我刚刚删除了这个方法:

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

那三点菜单就消失了(:

希望能帮助到你。

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

没有办法显示/隐藏单个活动的“三点”菜单指示器。 您可以通过在清单文件中指定android:targetSdkVersion =“14” (或以上)来隐藏此菜单指示器仅用于整个应用程序。

但是,如果它从本地android.preference.PreferenceActivity类扩展,则此菜单指示符不会显示在首选项活动上。 我有几个我的应用程序实现了这个场景,它完美的作品。

我假设您正在使用一些自定义首选项实现不从PreferenceActivity扩展。 Android Dev Teambuild议始终使用PreferenceActivity来处理应用程序中的任何偏好。

以下代码为我的应用程序工作。 尝试三星Galaxy S4(Android 4.3)和Nexus 4(Android 4.2):

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

重写方法并返回false记得不叫超级

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

res / menu / main.xml删除这个项目

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

另外:不要添加具有showAsAction="never" – 这将避免点显示。 如果你有更多的项目不能立即显示点将再次在那里(他们是被标记的项目,如果ifRoom )。

您实际上可以更改Android targetVersion,从而强制三点菜单隐藏或显示。 你需要像这样覆盖你的Activity的onCreate:

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

在Android 4.xx和Android 3.0上testing

我只是排除了“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; } 

对于这里的派对来说太迟了,我正在尝试删除所有菜单项和3点(选项菜单指示灯),我做了与此处给出的解决scheme不同的方式,我很惊讶没有人告诉过它。 有一个可见性标签,可以设置为false,并且不需要更改activity中的代码 visibility=false就可以实现

在res / menu / ..

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

应该:

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

如果MainActivity是

公共类MainActivity扩展了AppCompatActivity

在MainActivity类中,删除下面的代码。

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

只是想改善@war_hero的答案。 如果你想在运行时设置可见性你可以像这样使用oncreateoptions菜单参数

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

然后根据索引做出显示或隐藏任何菜单项的function。 例如

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

将此代码复制粘贴到菜单文件夹的main.xml文件中,您只需要将项目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> 

像这样做。

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

我正在检查,如果我的导航抽屉是可见的,我会隐藏菜单,反之亦然。 你可以根据你的要求使用它。 希望这可以帮助。 快乐的编码。 🙂

这是我如何find我的解决scheme。 这可能有帮助。

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

我刚刚用过

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

其中R.menu.main只是一个空菜单xml

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

如果你只是想隐藏button,这个解决scheme是有点破解,但适用于所有版本的Android(使用AppCompat),不会影响其他菜单项:

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> 

如果您只想在某些屏幕上隐藏“溢出”button,则可以将其设置为只有特定活动使用的替代主题(将AppTheme更改为AppTheme.NoOverflow):

AndroidManifest.xml中

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

这实际上只是使图标没有宽度和高度。 我很less推荐反对的devise指导方针,但在我的情况下,我们使用了没有正确报告菜单button的专用硬件。