如何在ImageButton / ImageView中显示图标而不进行更改?

时间:2011-04-01 16:18:47

标签: android image icons

在我的应用中,我有带图标的按钮。图标以drawable-ldpi-v4 /,drawable /和drawable-hdpi-v4 /中的三个密度提供为PNG图像。这是一个示例:

Original icons

每个图标都显示在ImageButton中:

<ImageButton style="@style/Shortcut" android:id="@+id/open_button"
        android:src="@drawable/shortcut_open" android:layout_marginRight="4dp"/>

Shortcut样式的位置:

<style name="Shortcut">
    <item name="android:layout_width">65dp</item>
    <item name="android:layout_height">45dp</item>
    <item name="android:scaleType">center</item>
    <item name="android:background">@drawable/shortcut_background</item>
</style>

但是,在某些设备/平台版本上,某些图标会被更改,模糊或其他内容。我不确定它是否正在扩展,它更像是我认为的渲染错误。我试图在BitmapDrawable上禁用抗锯齿,但这没有帮助。

如下图所示,在Android 2.1 LDPI上,一个图标被破坏/裁剪,在Android 1.6 MDPI和Android 2.1 HDPI上,额外的一行似乎随机添加在图标的底部(仔细观察)

Rendered icons

在清单中,我有关于supporting multiple screens in legacy apps的文档中建议的空<supports-screens />。添加anyDensity="true"无济于事。

显然,从Froyo开始,事情会变得更好,如上图所示。但是如何在Android&lt; = 2.1?

上解决这个问题

2 个答案:

答案 0 :(得分:2)

我认为你不应该为按钮使用显式尺寸(即使表示为倾斜),但让系统为你做。

使用

    <ImageButton android:id="@+id/SpeakButton"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"

也可能是你正在陷入其他人报告的“dip”与“dp”陷阱,其中文档说他们是同义词,但使用“dip”制作的东西按预期工作。

答案 1 :(得分:0)

不确定是否是这种情况,但您可以检查是否没有遇到此Google I/O talk中提到的错误。我仍然需要绕过它,但我认为如果你的目标是从1.5到2.0的平台,那么值得一看。