如何禁用/隐藏没有菜单按钮的ICS手机上的三点指示器(选项菜单指示器)。 ?
我在Manifest中以<uses-sdk android:minSdkVersion="5"/>
运行应用程序,代码使用4.0
编译。每个屏幕上都会显示三点指示符。
偏好活动的示例我不想显示三点指示符,因为它没有任何菜单选项。
在清单中添加android:targetSdkVersion="14"
可行。但是,不希望在所有屏幕上隐藏/删除三个点按钮。仅在首选项活动中不希望显示此三个点按钮。
答案 0 :(得分:31)
使用以下内容覆盖首选项片段中的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后,菜单将消失
on activity,唯一的区别是onPrepareOptionsMenu
是boolean
,您无需在创建时添加setHasOptionsMenu(true);
命令
答案 1 :(得分:24)
我刚刚删除了该方法:
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu);
return true;
}
然后那个三点菜单就消失了(:
希望它有所帮助。
答案 2 :(得分:16)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return false;
}
答案 3 :(得分:9)
无法显示/隐藏单个活动的“三点”菜单指示符。您可以通过在清单文件中指定 android:targetSdkVersion =“14”(或更高版本),仅为整个应用隐藏此菜单指示符。
但是,如果首选项活动从本机android.preference.PreferenceActivity类扩展,则此菜单指示符不。我在我的一些应用程序中实现了这个场景,它运行得很好。
我假设您正在使用一些不从PreferenceActivity扩展的自定义首选项实现。 Android开发团队建议始终将PreferenceActivity用于应用程序中的任何首选项。
答案 4 :(得分:6)
这里的派对太迟了,我试图删除所有菜单项和3点(选项菜单指示符),我的做法与此处给出的解决方案不同,我很惊讶没有人告诉过它。 有一个可见性标记可以设置为false,并且不需要更改活动中的代码 visibility=false
可以解决这个问题
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
visibility=false
android:title="@string/action_settings"/>
答案 5 :(得分:5)
覆盖方法并返回false记住不要调用super
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return false;
}
答案 6 :(得分:4)
在res / menu / main.xml
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
此外:不添加具有showAsAction="never"
的项目 - 这样可以避免显示点。如果您的商品数量多于一次无法显示的商品,那么这些商品就会再次存在(并且这些商品是标记为ifRoom
的商品)。
答案 7 :(得分:4)
以下代码适用于我的应用。试用三星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;
}
答案 8 :(得分:3)
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
}
答案 9 :(得分:2)
您实际上可以更改Android targetVersion,从而强制3点菜单隐藏或显示。您需要覆盖活动的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.x.x和Android 3.0上测试
答案 10 :(得分:2)
我刚刚排除了“onCreateOptionsMenu”-method:
@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;
}
答案 11 :(得分:2)
只想提高@war_hero的答案。 如果您想在运行时设置可见性您可以使用像此一样的oncreateoptions菜单参数
Menu overflow;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.mymenu, menu);
this.overflow = menu;
return super.onCreateOptionsMenu(menu);
}
然后根据索引创建一个显示或隐藏任何菜单项的功能。例如。
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);
}
答案 12 :(得分:2)
将此代码复制粘贴到菜单文件夹的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>
答案 13 :(得分:1)
应该是:
fn(user)
// Where it should have been
fn(null, user)
答案 14 :(得分:1)
如果你只是想隐藏按钮,这个解决方案有点像黑客但适用于所有版本的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>
如果您希望仅在某些屏幕上隐藏“溢出”按钮,则可以将此替换为主题(将AppTheme更改为AppTheme.NoOverflow),只有某些活动才能使用:
<强>的AndroidManifest.xml 强>
<activity android:name=".NoOverflowActivity"
android:theme="@style/AppTheme.NoOverflow" >
这实际上只是使图标没有宽度和高度。我很少推荐相反的设计指南,但在我的场景中,我们使用了没有正确报告菜单按钮的专用硬件。
答案 15 :(得分:1)
如果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);
}
答案 16 :(得分:0)
我刚用过
@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>
答案 17 :(得分:0)
这就是我找到我的解决方案的方法。这可能有帮助。
@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);
}
答案 18 :(得分:0)
这样做。
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(leftDrawer);
return (!drawerOpen);
}
我正在检查我的导航抽屉是否可见我将隐藏菜单,反之亦然。您可以根据您的要求使用它。希望这可以帮助。快乐的编码。 :)