【问题标题】:How to display icons without alteration in an ImageButton/ImageView?如何在不改变 ImageButton/ImageView 的情况下显示图标?
【发布时间】:2011-04-01 16:18:46
【问题描述】:

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

每个图标都显示在一个 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 上,图标底部似乎随机添加了一条额外的线(仔细观察) .

在清单中,我有一个空的&lt;supports-screens /&gt;,正如有关supporting multiple screens in legacy apps 的文档中所建议的那样。添加anyDensity="true" 没有帮助。

显然,从 Froyo 开始,情况会好转,如上图所示。但是如何在 Android

【问题讨论】:

  • 不要设置在后台,而应该放在源中,避免缩放。
  • 图标不在后台,在src中。

标签: android image icons


【解决方案1】:

我认为你不应该为按钮使用明确的尺寸(即使表示为倾斜),而是让系统为你做。

使用

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

也可能是您陷入了其他人报告的“dip”与“dp”陷阱,其中文档说它们是同义词,但使用“dip”使事情按预期工作。

【讨论】:

  • 我需要按钮(背景)具有固定大小且图标居中。并且按钮大小没有问题。我说的是图标的改变,而不是按钮的大小。
  • 好吧,我认为这是一种解决方法,但它确实有效。为了获得固定的按钮大小,我在所有 PNG 中添加了一些填充,以便每个图标现在都是 32x32dp,并在样式中加上一些额外的填充。现在确实,使用 wrap_content,图标可以在所有设备和版本上正确显示。谢谢!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 2016-06-07
    • 2017-07-30
    • 2017-03-22
    • 2019-10-07
    相关资源
    最近更新 更多