ActionBarSherlock Item Icon 奇怪的宽度与Android 4.3

Posted

技术标签:

【中文标题】ActionBarSherlock Item Icon 奇怪的宽度与Android 4.3【英文标题】:ActionBarSherlock Item Icon strange width with Android 4.3 【发布时间】:2013-11-24 21:04:23 【问题描述】:

我正在使用 ActionBarSherlock 开发应用程序

菜单中的一项是矩形图像。查看它的 xml:

<item
    android:id="@+id/kapturar_action"
    android:showAsAction="always"
    android:icon="@drawable/camera_action_icon"
    android:title="@string/kapturar" />
<item

到目前为止一切顺利。 问题是 SDK 4.3 似乎只接受方形图像(这是我的假设,我不确定)并且图标以一种奇怪的方式显示,保留了看起来是“最大宽度”属性的东西。

查看打印屏幕

Android 2.2 - 模拟器:

Android 4.1.2 - 三星 Galaxy S3 Mini:

Android 4.3 - Nexus 4:

我仔细检查了drawables,我认为一切都是正确的。我已经定义了 MDPI、HDPI 和 XHDPI 图像。

任何人都可以肯定在菜单项中使用矩形可绘制对象是不可能的吗?有没有办法解决 Android 4.3 中保留向后兼容的问题?

【问题讨论】:

再次检查drawable,在再次安装之前,清理并重建你的项目 又这样做了,什么也没做。 :( 解决方法怎么样:制作一个您想要的布局,然后以编程方式将其添加到ActionBar 因为它是一个按钮,而不仅仅是一个视图。 你尝试过 ActionBar Compat 吗? 【参考方案1】:

Action Bar Sherlock 现在是 deprecated,因为 Google 发布了自己的 Action Bar compatibility library。

我强烈建议切换到那个官方库,我猜/希望你的问题不会出现在那里。

【讨论】:

是的,Jake Wharton 表示将随着 ABS 的未来发展而停止。 @NikolaDespotoski 你能指出杰克在哪里说的吗?谢谢!【参考方案2】:

您可以简单地使用 ActionBar 的兼容版本。这不是很好的答案,但它会帮助你。

让它只是注释行

registerImplementation(ActionBarSherlockNative.class);

在 ActionBarSherlock 类中。

此外,在此之后,您可以在 ActionBarSherlock 中编辑源、资源,它们在 Android 2.3 和 Android 4.0+ 设备上的外观相同。

【讨论】:

【参考方案3】:

尝试将您的可绘制对象放入另一个文件夹。我的意思是,如果它在 drawable-xhdpi 文件夹中,请将其放入 drawable-hdpi (或其他)。 有时它解决了从资源中调整图像大小的问题

【讨论】:

以上是关于ActionBarSherlock Item Icon 奇怪的宽度与Android 4.3的主要内容,如果未能解决你的问题,请参考以下文章

ActionBarSherlock:java.lang.NoClassDefFoundError:com.actionbarsherlock.R$styleable

更改 ActionBarSherlock 背景颜色

ActionBarSherlock & ShareActionProvider 导致 InflateException

Gradle 无法构建 ActionBarSherlock

ActionBarSherlock、ViewPager、TabsAdapter 嵌套选项卡片段

ActionBar 菜单项的动态可绘制图标? (安卓,ActionBarSherlock)