检测选项菜单的背景颜色

时间:2011-11-28 17:38:47

标签: android options-menu

我已经意识到Android的Option菜单中至少有两种背景颜色。在HTC Hero上,背景为白色,在三星Galaxy S II上,背景为黑色。

当我设置背景菜单的图标时,这成了一个问题。有没有办法检测Android中Option菜单的背景颜色?

4 个答案:

答案 0 :(得分:3)

可能的解决方案:

对于Android 4.0+,您还可以设置亮/暗Holo主题,保证(至少在理论上)在不同的手机制造商中保持不变 - 所以它在HTC Sense,Samsung TouchWiz等中看起来都一样

答案 1 :(得分:2)

这确实是一个非常烦人的问题。

在我的实现中,我总是尝试使用来自android.R.drawable.IC_menu_ * 的标准图标,所以我确信这些图标是框架的一部分,用户总是非常惊讶地看到他们在我的应用程序中的通用图标!

这为设备上的用户体验提供了非常好的连续性,但这并没有回答您的问题,但至少提供了一种解决方法。

以下是所有Android 2.2图标:http://androiddrawableexplorer.appspot.com/ 您可以相信我,使用这些图标将始终适合您的颜色。

答案 2 :(得分:1)

首先回答您的标题问题:

您可以通过阅读attributes of the current theme来参考和阅读选项菜单的背景。此属性为panelFullBackground。例如。将它设置为XML¹中的textview的背景:

<TextView android:background="?android:attr/panelFullBackground" 
          ... />

请注意,背景似乎是纯色,但事实并非如此 - 它实际上是一个位图。如果你仔细观察,你可以在顶部(android 2.3 +)或者一个投影(&lt; = android 2.2)看到灰色边框,所以它有点困难。幸运的是,有一个名为panelColorBackground的不同属性,它尽可能地与drawable的背景颜色相匹配。因此,如果您只想要正常的背景颜色,请改用它。

¹这肯定也可以从代码中读取,但我现在不知道如何从头顶开始,也许我会在以后查找并编辑它。

关于图标

所以你有如上所述的颜色,但你仍然需要处理它,以确定它是暗色还是亮色。你可以这样做,但这不是处理这些图标的常用方法,可能需要做很多工作才能涵盖所有可能的情况 - 更不用说你必须为每个变体创建图标了。

通常你应该采用平台菜单图标样式。这适用于所有设备并且看起来很熟悉用户(不遵循此规则的自定义图标通常看起来“错误” - 例如astro文件管理器这样做我相信)。 您可以手动(请参阅guidelines,但更好的选择是Android Asset Studio。 它有两种形式:

  • 作为webapp
  • 集成在最新版本的日食的ADT插件中 (在File->New->Other->Android Icon Set下)

两者的工作流程非常相似,选择点“菜单图标”并按照向导进行操作。它会让你输入一个简单的黑白位图,你想要的图标只是勾勒出它的形状。在您指定之后,资产工作室将为您生成所有内容。使用“clipart”选项玩一下,有一些示例位图准备好看它是如何工作的。完成后,webapp会为您提供一个简单的zip,可以将其解压缩到项目目录中,eclipse版本将其直接添加到您在向导中选择的项目中。

答案 3 :(得分:-1)

背景颜色可以是任何颜色,因为它在制造商的Framework中实现。你无法阅读它,事实上你永远不需要阅读它。

只需在res / menu文件夹中创建自定义菜单布局,设置样式并使用它。