【发布时间】:2011-12-10 02:57:46
【问题描述】:
我的ImageView 有以下布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:descendantFocusability="blocksDescendants">
<ImageView
android:id="@+id/imageview_icon"
android:layout_width="48dp"
android:layout_height="48dp"
android:scaleType="fitCenter" />
(...)
</LinearLayout>
48dp 分别等于 ldpi、mdpi 和 hdpi 中的 36px、48px 和 72px。这个ImageView 中将使用的所有图像基本上都是图标,我在网上找到了我想要的应用程序(免费许可)。但不幸的是,它没有提供大于 48px 的图像,并且使用不同的图像是不可能的。所以我需要一个新的解决方案...
目前我在 ldpi 和 mdpi 文件夹中分别有 36 像素和 48 像素的图像。但是我遇到了hdpi 的问题。对于在hdpi 上运行的设备,我想要的是让他们使用mdpi 图像(可用的更大的图像)并按原样使用它,而无需缩放。基本上,hdpi 的 ImageView 是 72px,所以我希望 48px 的图像位于 72px 的中间,没有缩放。为此,我只是尝试将上面ImageView 中的scaleType 更改为center,但无论如何图像都会被缩放。
我在这里的最终问题是,解决上述问题的正确方法是什么?我怎样才能让ldpi 和mdpi 图像以各自的密度使用,但让运行hdpi 的设备拾取可用的最大图像(即mdpi 图像)并防止任何缩放,只适合图像在ImageView的中心?
编辑:
我自己回答了这个问题,但这可能是其他来到这里的人正在寻找的答案。但我确实提供了一些关于真正发生的事情和潜在问题的见解。如果可以,请查看并提供解决方法/修复。我敢你:)
【问题讨论】:
-
是的,尝试了最合乎逻辑的可能性。没有任何效果:(
-
请问您为什么需要这个?通常人们希望比在普通屏幕上,五个 64dp 图标应该始终占据整个屏幕宽度(即 320dp),无论设备分辨率如何,都应该看起来相同,包括图标两侧总是接触(可选的与设备无关的填充)
-
我不明白你的问题...
-
我正在使用一个库来为我的项目工作做可撤回的(使背景变圆),但是当我将它更改为 ImageView 时它工作得很好!