如何在没有菜单按钮的 ICS 手机上禁用/隐藏三点指示器(选项菜单指示器)。?
我<uses-sdk android:minSdkVersion="5"/>
在 Manifest 中运行应用程序,代码是用4.0
. 三点指示器显示在每个屏幕上。
我不想显示三点指示器的偏好活动示例,因为它没有任何菜单选项。
添加android:targetSdkVersion="14"
清单它可以工作。但是不想隐藏/删除所有屏幕上的三个点按钮。只有在偏好活动中不想显示这个三点按钮。
如何在没有菜单按钮的 ICS 手机上禁用/隐藏三点指示器(选项菜单指示器)。?
我<uses-sdk android:minSdkVersion="5"/>
在 Manifest 中运行应用程序,代码是用4.0
. 三点指示器显示在每个屏幕上。
我不想显示三点指示器的偏好活动示例,因为它没有任何菜单选项。
添加android:targetSdkVersion="14"
清单它可以工作。但是不想隐藏/删除所有屏幕上的三个点按钮。只有在偏好活动中不想显示这个三点按钮。
用这个覆盖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);
在创建时添加命令
我刚刚删除了方法:
@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 开发团队建议始终将 PreferenceActivity 用于应用程序中的任何首选项。
在这里聚会太晚了,我试图删除我所有的菜单项和 3 点(选项菜单指示器),我所做的与这里给出的解决方案不同,我很惊讶没有人告诉它。有一个可见性标签可以设置为 false 并且不需要更改活动中的代码就 visibility=false
可以了
在水库/菜单/..
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
visibility=false
android:title="@string/action_settings"/>
删除此项目res / menu / main.xml
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
另外:不要添加具有的项目showAsAction="never"
- 这将避免显示点。如果您的项目多于无法一次显示的项目,点将再次出现(并且它们是被标记的项目ifRoom
)。
覆盖方法并返回 false 记住不要调用 super
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return false;
}
以下代码适用于我的应用程序。在三星 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;
}
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
}
我刚刚排除了“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;
}
您实际上可以更改 Android targetVersion,从而强制 3 点菜单隐藏或显示。您需要像这样覆盖 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 上测试
只是想改进@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);
}
将此代码复制粘贴到菜单文件夹中的 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>
如果您只是想隐藏按钮,此解决方案有点小技巧,但适用于所有版本的 Android(使用 AppCompat)并且不会影响您的其他菜单项:
样式.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" >
这实际上只是使图标没有宽度和高度。我很少推荐相反的设计指南,但在我的场景中,我们使用了未正确报告存在菜单按钮的专用硬件。
应该:
<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);
}
我刚用
@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>
这就是我如何找到我的解决方案。它可能会有所帮助。
@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 onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(leftDrawer);
return (!drawerOpen);
}
我正在检查我的导航抽屉是否可见,我将隐藏菜单,反之亦然。您可以根据自己的要求使用它。希望这可以帮助。快乐编码。:)