如何禁用/隐藏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后,菜单将消失
在活动上,唯一的区别是onPrepareOptionsMenu
是boolean
,你不需要添加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的专用硬件。