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

时间:2012-02-09 06:44:11

标签: android android-4.0-ice-cream-sandwich

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

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

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

在清单中添加android:targetSdkVersion="14"可行。但是,不希望在所有屏幕上隐藏/删除三个点按钮。仅在首选项活动中不希望显示此三个点按钮。

19 个答案:

答案 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,唯一的区别是onPrepareOptionsMenuboolean,您无需在创建时添加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可以解决这个问题

res / menu /..

中的

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

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