首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在onOptionsItemSelected中获取特定的MenuItem并将其设置为SHOW_AS_ACTION_NEVER

在Android开发中,onOptionsItemSelected 方法是用于处理选项菜单项点击事件的关键回调。当用户点击菜单中的某个项时,系统会调用此方法,并传递被点击的 MenuItem 对象作为参数。

基础概念

  • MenuItem: 表示菜单中的一个项,可以包含图标、标题、快捷键等属性。
  • SHOW_AS_ACTION_NEVER: 是一个标志位,用于指示该菜单项应该始终显示在溢出菜单中,而不是在动作栏上。

相关优势

将某个菜单项设置为 SHOW_AS_ACTION_NEVER 可以确保该菜单项不会占用宝贵的动作栏空间,特别是当动作栏空间有限时。这有助于保持界面的整洁和易用性。

类型与应用场景

  • 类型: 这是一个标志位,用于控制菜单项的显示方式。
  • 应用场景: 当某个菜单项不常使用,或者其功能较为复杂,不适合直接放在动作栏上时,可以使用此标志位。

示例代码

假设你有一个菜单项 R.id.menu_item_settings,你想将其设置为始终显示在溢出菜单中,可以这样做:

代码语言:txt
复制
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_item_settings:
            // 处理设置菜单项的点击事件
            showSettingsDialog();
            return true;
        // 其他菜单项的处理...
    }
    return super.onOptionsItemSelected(item);
}

private void showSettingsDialog() {
    // 显示设置对话框的逻辑
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    
    // 获取特定的菜单项并设置其显示方式
    MenuItem settingsItem = menu.findItem(R.id.menu_item_settings);
    settingsItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
    
    return true;
}

可能遇到的问题及解决方法

问题: 设置了 SHOW_AS_ACTION_NEVER 后,菜单项仍然显示在动作栏上。

原因: 这可能是因为在某些情况下,系统会根据可用空间自动调整菜单项的显示方式。例如,当动作栏有足够的空间时,系统可能会忽略 SHOW_AS_ACTION_NEVER 设置。

解决方法: 确保在 onCreateOptionsMenu 方法中正确设置了标志位,并且检查布局文件中是否有足够的空间供动作栏使用。如果问题仍然存在,可以尝试使用 SHOW_AS_ACTION_IF_ROOMSHOW_AS_ACTION_ALWAYS 进行测试,以确定系统是否正确处理了这些标志位。

通过以上步骤,你应该能够正确地将特定的菜单项设置为始终显示在溢出菜单中,并解决可能遇到的问题。

相关搜索:在函数中获取带引号的变量并将其设置为空的如何在soapui中运行外部文件并获取输出并将其设置为头文件获取json值并将其存储在我的表中,并使用某个特定的模式获取Promise Value (axios中的Axios)并设置为Hook从ChildVM中获取必要的属性并将其设置为ParentVM中的ViewModel添加一个新的列IsActive,并将其数据类型设置为bit,并希望将其设置为not null。无法在列IsActive中插入null从Functional React组件中的JSON响应中获取一个特定值,并将其设置为Select选项获取列名并使用r将其赋值为dataframe中未列出的列中的值如何在html中获取用户输入并将其设置为js中的变量?如何从文件中获取数据并将其设置为vaadin中的文本区域从txt文件中获取数组并将其设置为python中的构造函数参数在java中删除数组中的元素可以将其设置为null吗?在代码中为特定行设置不同的等待时间在Vue中,如何根据复选框的值将其设置为禁用?如何从数字字段中获取值并将其设置为网格的数字列如何获取销售订单ID并将其设置为netsuite中的自定义记录?如何从数据库获取单元格值,并使用angularjs将其设置为下拉列表中的默认值?获取该地点的天气数据并将其设置在扁平表中如何查询Parse.com类中的特定列值并将其设置为字符串?在Gradle 4.1中为特定的口味-构建类型组合设置applicationIdSuffix
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android开发笔记(二十)顶部导航栏ActionBar

显示或者关闭ActionBar的方式有如下几种: 1、在AndroidManifest.xml中给activity设置无标题栏的主题,就关闭ActionBar。...导航项Navigation 使用导航项需要在ActionBar中将其设置为具体模式(setNavigationMode),目前ActionBar支持两种导航模式: 1、NAVIGATION_MODE_LIST...使用定制视图需要在ActionBar中将其设置为可用(setDisplayShowCustomEnabled),同时要通过setDisplayOptions来设置DISPLAY_SHOW_CUSTOM。...定制视图的布局与普通布局一样,都在layout目录下,从布局文件中获取并修改完成视图后,调用ActionBar的setCustomView方法就完成了定制。...,并关联搜索动作对应的activity(本例中的activity是SearchResultActvity) private void initSearchView(Menu menu) {

9.2K20
  • 速读原著-Android应用开发入门教程(菜单的使用)

    6.5 菜单的使用 菜单是屏幕中比较独立的一个元素,它和普通的控件略有不同,很多 GUI 系统都对菜单有单独的接口和运作方式。在 Android 中具有单独接口,用于在活动中使用菜单。...boolean onOptionsItemSelected(MenuItem item) onCreateOptionsMenu()用于在建立菜单时进行设置,建立时为每一个按钮设置 ID,菜单项被选择时调用...onOptionsItemSelected(),通过 MenuItem 类的 getItemId()函数获得这个菜单的 ID,继续进行处理。...菜单类在 Android 中表示为 android.view.Menu 类。使用这个类可以进行一些更为细节的设置和操作。...int groupId, int itemId, int order, int titleRes) add()的第 1、2 个参数是整数值,分别代表按钮项的组 ID 和选项 ID,第 3 个参数用于设置按钮上的文件

    35920

    速读原著-Android应用开发入门教程(菜单的使用)

    6.5 菜单的使用 菜单是屏幕中比较独立的一个元素,它和普通的控件略有不同,很多 GUI 系统都对菜单有单独的接口和运作方式。在 Android 中具有单独接口,用于在活动中使用菜单。...boolean onOptionsItemSelected(MenuItem item) onCreateOptionsMenu()用于在建立菜单时进行设置,建立时为每一个按钮设置 ID,菜单项被选择时调用...onOptionsItemSelected(),通过 MenuItem 类的 getItemId()函数获得这个菜单的 ID,继续进行处理。...菜单类在 Android 中表示为 android.view.Menu 类。使用这个类可以进行一些更为细节的设置和操作。...int groupId, int itemId, int order, int titleRes) add()的第 1、2 个参数是整数值,分别代表按钮项的组 ID 和选项 ID,第 3 个参数用于设置按钮上的文件

    46900

    安卓 topic-菜单 Menu

    定义后,您可以在 Activity 或片段中扩充菜单资源(将其作为 Menu 对象加载)。...处理点击事件 用户从选项菜单中选择项目(包括应用栏中的操作项目)时,系统将调用 Activity 的 onOptionsItemSelected() 方法。 此方法将传递所选的 MenuItem。...针对 ListView或 GridView中项目组的批处理上下文操作(允许用户选择多个项目并针对所有项目执行操作)。 下文介绍每种场景所需的设置。...,则应: 实现 AbsListView.MultiChoiceModeListener 接口,并使用 setMultiChoiceModeListener() 为视图组设置该接口。...它适用于: 为与特定内容确切相关的操作提供溢出样式菜单(例如,Gmail 的电子邮件标头,如图所示)。 Gmail 应用中的弹出菜单,锚定到右上角的溢出按钮。

    2.7K20

    WebView自定义浏览器

    在布局文件中添加和控件, 在布局文件中添加控件 在Activity中获取WebView对象 调用WebView对象的loadUrl()方法,参数...:String路径 添加访问网络的权限android.permission.INTERNET 调用WebView对象的getSettings()方法,获取到WebSettings设置对象 调用WebSettings...对象的setSupportZoom()方法,设置支持缩放,参数:布尔值 调用WebSettings对象的setBuiltInZoomControls(),设置缩放控件,参数:布尔值、 调用WebView...,排序,标题 添加刷新,后退,前进 监听小菜单点击事件 重写onOptionsItemSelected()方法,传递进来MenuItem对象 switch判断一下MenuItem对象的getOrder(...重写onPageStarted()方法和onPageFinshed()方法 在onPageStarted()方法内 调用ProgressDialog对象的show()方法 在onPageFinshed(

    1K20

    跟我学Android之八 ActionBar与菜单

    Ø如果希望应用程序能响应菜单项的单击事件,重写Activity的onOptionsItemSelected (MenuItem mi)方法即可。...()方法会执行 Ø参数为MenuItem的对象 Ø通过调用MenuItem的getItemId()方法可以获得菜单项的ID Ø以选中的菜单项ID为标准判断和处理事件 创建上下文菜单...” Ø在group标签中添加item标签定义单选菜单项 l在一些低的版本中,单选菜单项不能设置icon 构建单选框菜单 u单选框布局示例 <group android:checkableBehavior...标签添加子标签group Ø设置group的属性android:checkableBehavior=“all” Ø在group标签中添加item标签定义单选菜单项 l在一些低的版本中,单选菜单项不能设置...icon u也可以直接为单个菜单项设置复选框 Ø设置item的属性android:checkable=“true” Ø 构建复选框菜单 u复选框布局示例 <group android

    10510

    安卓开发_浅谈OptionsMenus(选项菜单)

    (MenuItem item) { 42 // TODO Auto-generated method stub 43 //根据菜单项id执行响应事件 44...: 1、 android:id= 是菜单项id 2、android:orderInCategory= 是菜单项优先级,值越大,优先级越多,当菜单项过多时,可隐藏在折叠菜单中 3、android:showAsAction...=   原来是特定版本用到的,当你的应用程序目标设为蜂巢平台(即 Android 3.0)时,你可以利用Action Bar部件提供的全部功能,将你的选项菜单项放在Action Bar的右上角,  对用户来说使用更方便...这个属性可接受的值有:     1.alaways:这个值会使菜单项一直显示在ActionBar上。     2.ifRoom:如果有足够的空间,这个值会使菜单显示在ActionBar上。     ...switch (item.getItemId()) { 45 46 47 //动态菜单判断Id,id为第二个参数 48 case 100: 49

    74370

    移植SlidingMenu Android library,和安装example出现的问题解决

    (两个下的都是最新版本) 步骤: 1.将下载的Actionbarssherlock中/library下的文件解压到workspace(你的项目目录),改项目名称为Actionbarssherlock,从...解压slidingmenu中/example。import该项目,设置api14或更高,并add你的SlidingMenu。运行看看效果。2.1以上的系统都可以运行。...Fix your dependencies Fix: 这是由于jar包版本不一致导致的,检查SlidingMenu和Actionbarsherlock中的\libs文件夹里的哪个android-support-v4...(MenuItem) in the type Activity is not applicable for the arguments The method onOptionsItemSelected(...MenuItem) of type BaseActivity must override or implement a supertype method The method onOptionsItemSelected

    64670

    Kotlin安卓开发学习(5)

    ()方法得到了对象,在调用它的inflate()方法,其传入两个参数第一个参数用于指定我们通过哪一个资源文件来创建菜单,第二个参数用于指定我们的菜单项将添加到哪一个Menu对象当中。...当然,光创建出菜单不行,我们也得给菜单添加点击事件,重写onOptionsItemSelected(): override fun onOptionsItemSelected(item: MenuItem...效果如下: 图片 更多的菜单 上面的菜单只适配于activity,在右上角显示菜单,但实际使用中我们可能会遇上长按某块区域后,在其旁边显示菜单项。...在长按事件中,我们需要创建PopupMenu并设置其inflate和OnMenuItemClickListener,来实现效果,具体如下: var popupMenu = PopupMenu(this,...别的设置方法与之前的菜单基本相同 销毁一个Activity 使用finish()方法可以销毁一个Activity

    52310

    【Android初级】如何动态添加菜单项(附源码+避坑)

    我们平时在开发过程中,为了灵活多变,除了使用静态的菜单,还有动态添加菜单的需求。...”,不关闭页面 实现思路如下: 复写 onCreateOptionsMenu 方法,在该方法内调用Menu的add方法,动态添加菜单,并设置菜单的顺序和内容 复写 onOptionsItemSelected...方法,在该方法内处理菜单的点击事件 再单独提供两个方法,分别用于实现“关于”对话框和“退出对话框”的显示 源码如下: 1、主Activity import android.app.Activity;...0,顺序为 0 的“关于”菜单 menu.add(0, 0, 0, "About"); // 添加一个 id 为 1,顺序为 1 的“退出”菜单 menu.add...(@NonNull MenuItem item) { super.onOptionsItemSelected(item); // 这里的 itemId 就是上面add方法的第二个参数

    1K10

    2014-10-31Android学习------菜单的处理(一)-----OptionsMenu

    它是 add(int, int, int, CharSequence)的变体,或者变化而来,变化之处就在于:菜单文字标题的字符串是可以从资源文件string定义并获取的。...item) 注意到这个参数是:MenuItem item 在我们创建的时候,他返回的就是这个类型的。...//菜单被选中的响应事件 参数是选中的那个菜单item @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO...菜单是用户界面中最常见的元素,使用也非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu),下面分别举例说明...); // setIcon()方法为菜单设置图标,这里使用的是系统自带的图标,同学们留意一下,以 // android.R开头的资源是系统提供的,我们自己提供的资源是以R开头的 menu.add(

    38110
    领券