对溢出菜单项使用自定义视图

2024-03-07

我在对操作栏 Sherlock 中的溢出菜单执行任何操作时遇到了真正的困难。

理想情况下,我想使用自定义TextView为每个项目设置不同的字体并更改颜色pressed state.

我已经尝试过(都没有成功):

更改操作栏溢出的样式 https://stackoverflow.com/questions/14193071/changing-the-style-of-actionbar-overflow
操作栏样式的溢出菜单项 https://stackoverflow.com/questions/14859794/actionbar-styled-overflow-menu-items
列表视图作为 Sherlock 操作栏中的操作溢出 https://stackoverflow.com/questions/14119237/listview-as-action-overflow-in-sherlock-actionbar
https://groups.google.com/forum/#!msg/actionbarsherlock/5lHOKNlXn_4/f9XicMXbFFAJ https://groups.google.com/forum/#!msg/actionbarsherlock/5lHOKNlXn_4/f9XicMXbFFAJ

我的应用程序将有不同的片段,全部扩展BaseFragment溢出菜单中有不同的项目。我也在使用 v4 支持包。我正在像这样创建我的菜单:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.activity_borrow, menu);
}

活动借用.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_filter"
        android:title="test"
        android:orderInCategory="100"
        android:showAsAction="never"
/>
</menu>

我的应用程序使用的主题继承自Theme.Sherlock.

如何在该菜单中使用自定义视图?或者至少,我怎样才能改变默认的蓝色pressed state?


要更改溢出列表项的颜色,请将两个项目添加到您的应用程序主题中,该主题通常在res/values/styles.xml:

<item name="android:dropDownListViewStyle">@style/DropDownListView</item>
<item name="dropDownListViewStyle">@style/DropDownListView</item>

在同一个文件中,添加您刚刚指定的样式:

<style name="DropDownListView" parent="@style/Widget.Sherlock.ListView.DropDown">
  <item name="android:listSelector">@drawable/selectable_background</item>
</style>

最后创建一个可绘制的选择器selectable_background.xml在可绘制文件夹中,包含以下内容:

<selector xmlns:android="http://schemas.android.com/apk/res/android"
        android:exitFadeDuration="@android:integer/config_mediumAnimTime" >
    <item android:state_pressed="false" android:state_focused="true" android:drawable="@color/focussed_color" />
    <item android:state_pressed="true" android:drawable="@color/pressed_color" />
    <item android:drawable="@android:color/transparent" />
</selector>

最后,定义通常放置的颜色colors.xml:

<resources>
    <color name="pressed_color">#FF8E4067</color> <!-- your purple tone already ;) -->
    <color name="focussed_color">#DD8E4067</color>
</resources>

在我的应用程序中,我按照 baboo 的建议使用了“ActionBar 样式生成器”,它可以方便地为您处理所有事情。对于这个答案,我只是提取并简化了我认为构成溢出菜单样式的部分。

我认为三种不同物品的造型效果有一些神秘之处:

  • 据我了解,android:dropDownListViewStyle包括 隐藏在 ActionBar 中“三个点”后面的溢出菜单。
  • 不要混淆 android:actionDropDownStyle,用于设置应用程序导航下拉列表的样式(如果您使用过)actionBar.setNavigationMode(NAVIGATION_MODE_LIST)
  • 但是,某些带有硬件菜单按钮的 Android 设备(例如 Nexus S 或 Galaxy S3 Mini) 不显示“三个点”,而是显示一个从 如果单击硬件菜单按钮,则显示在屏幕底部。android:popupMenuStyle是设置此样式的正确属性。

再说一次,这只是我在自己的应用程序开发中所记得的。

另外,请确保检查没有其他样式文件(例如带有配置限定符 http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources) 覆盖您刚刚定义的样式。

总而言之,我知道这只会改变列表项的背景颜色。要在那里使用完全自定义的视图,您可以创建一个自定义微调视图 https://stackoverflow.com/a/14123377/1140682,向 ActionBar 添加一个带有“三点”图标的虚拟按钮,然后单击时打开微调器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对溢出菜单项使用自定义视图 的相关文章

随机推荐

  • 设备重新启动后,AVSampleDisplayBuffer 随机挂起

    问题描述 AVSampleBufferDisplayLayer 似乎在 iOS 12 3 1 上挂起 gt iOS 12 2 也受到影响 重启 看起来 5 分钟后一切又恢复正常了 该问题在 iOS 11 上无法重现 在我们的生产代码中 我们
  • 在 /usr/share/phpMyAdmin/libraries/Error.class.php 中找不到 phpMyAdmin 类“PMA_Message”

    我刚刚收到此错误 过去 2 年 phpMyAdmin 中没有错误 PHP 致命错误 在第 24 行 usr share phpMyAdmin libraries Error class php 中找不到类 PMA Message 我尝试搜索
  • 如何强制 ghc 的分析器更深入地了解库?

    我正在尝试分析我的程序 所以我编译它 prof and auto all标志并运行 P获取详细的分析报告 ghc make prof auto all Test hs Test RTS P 这是一份分析报告 COST CENTRE MODU
  • R 将 KS 测试逐行应用于 2 个矩阵

    我在 R 中有两个矩阵 A 和 B 行数相同 但列数不同 我想运行一个柯尔莫哥洛夫 斯米尔诺夫检验 https stat ethz ch R manual R devel library stats html ks test html每个矩
  • 在 PowerShell 中拆分不带分隔符的字符串

    我想分割一个字符串并将结果标记存储在变量中 例如我的字符串是160519 我想以一种方式分割它16 05 and 19存储在单独的变量中 我尝试使用 split 但是因为我的字符串没有分隔符 所以我发现很难剪切字符串 如果使用正则表达式 实
  • 从另一个表单添加到列表视图

    我想知道如何通过在 form2 中的文本框输入数据来更新 form1 中的列表视图 如果我将所有文本框放在同一个表单上 我的代码可以正常工作 我想我需要对第二个表格的一些参考 但无法让它工作 任何能让我朝着正确方向前进的建议都会很好 也有任
  • RegisterStartupScript 似乎无法在更新面板内进行页面回发

    好的 所以我正在开发一个使用自定义日期选择器控件的系统 我知道还有其他控件 但为了保持一致性 我想了解为什么我当前的问题发生并修复它 所以它是一个带有文本框的自定义用户控件 在 Page PreRender 上执行以下操作 protecte
  • 在asp.net core rc2应用程序的ActionFilterAttribute中访问IConfiguration [重复]

    这个问题在这里已经有答案了 我正在编写将验证验证码的属性 为了正常工作 它需要知道秘密 我将其保留在设置中 秘密管理器工具 但是我不知道如何从属性类读取配置 asp net core中的DI支持构造函数注入 不支持属性注入 所以这会报编译错
  • 将图像从浏览器保存到手机图库

    因此 纯粹从安全角度来看 这似乎不太可能 但我需要做好基础工作 有没有人遇到过将浏览器中的图像保存到用户图库的方法 在本例中 我专门谈论来自站点服务的 javascript 不是音位间隙 虽然我知道您可以点击并按住图像进行保存 但我希望为技
  • 帮助小商店在“乔尔测试”中获得更高分数的工具

    关于问题 1 至问题 4乔尔测试 http www joelonsoftware com articles fog0000000043 html我认为都是关于正在使用的开发工具和为开发人员提供的支持系统 您使用源代码管理吗 你能一步完成构建
  • 如果您按住 Ctrl 键单击或按住 Rt 键单击通知图标,如何获得不同的上下文菜单?

    我有一个基于系统托盘的应用程序 如果您右键单击它 我有一个很好的上下文菜单 但是如果您左键单击它 我希望显示一个不同的上下文菜单 现在我让不同的菜单显示出来 private void niTrayIcon MouseClick object
  • 如何使这个 SwingWorker 代码可测试

    考虑这段代码 public void actionPerformed ActionEvent e setEnabled false new SwingWorker
  • 角度.net core api cors预检请求错误

    我无法使 cors 工作 Angular net core 2 1 我收到此错误 访问 XMLHttpRequest 位于 https dev SaveAPP https dev SaveAPP 从原点 https 页面 https pag
  • dc.js - 动态更改折线图中堆叠层的 valueAccessor 并重绘它

    我正在尝试实现一个仪表板来显示基本数据 我实际上完全陷入了一个问题 奇怪的是 我在网上找不到任何类似的东西 所以我没有太多关于如何继续前进的线索 我主要有两个图表 a lineChart called stackChart that 使用
  • 极端情况、意外和不寻常的 MATLAB [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 JavaFX 中重新加载应用程序?

    我有一个小游戏 里面有New Game按钮 有很多变量需要重置New Game按钮被按下 是否有任何方法可以轻松地重新加载整个应用程序或任何替代方案来刷新场景 阶段或变量 我只想在首次加载应用程序时将其带入初始阶段 我在互联网上浏览了不同的
  • PHP 按位异或 vs. JavaScript 按位异或

    我正在尝试找到一种方法来制作PHP Bitwise XOR结果与以下结果相符JavaScript Bitwise XOR 我遇到了这个问题的不同问题 但都没有答案 这里有几个 Javascript 和 PHP 异或等效项 https sta
  • ios 录制视频并同时播放音频

    我想同时录制视频和播放音频 当开始录制视频时 预加载的音频开始播放 当停止视频录制时 音频也停止播放 我尝试使用第三方库录制视频 迅捷相机 https github com Awalz SwiftyCam https github com
  • 纱线错误:没有场景;必须至少有一个

    我尝试安装Yarn https yarnpkg com lang en 当我使用yarn我得到的命令 00h00m00s 0 0 ERROR There are no scenarios must have at least one my
  • 对溢出菜单项使用自定义视图

    我在对操作栏 Sherlock 中的溢出菜单执行任何操作时遇到了真正的困难 理想情况下 我想使用自定义TextView为每个项目设置不同的字体并更改颜色pressed state 我已经尝试过 都没有成功 更改操作栏溢出的样式 https