我的布局如下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>
Those 48dp
等于 36px、48px 和 72pxldpi
, mdpi
and hdpi
分别。在此将使用的所有图像ImageView
基本上都是图标,我在网上找到了我想要的应用程序(免费许可证)。但不幸的是,它不提供大于 48px 的图像,并且使用不同的图像也是不可能的。所以我需要一个新的解决方案......
现在我有 36px 和 48px 图像ldpi
and mdpi
文件夹,分别。但我遇到了麻烦hdpi
。我想要运行的设备hdpi
是让他们使用mdpi
图像(可用的较大图像)并按原样使用,无需缩放。基本上,ImageView
for hdpi
是 72px,所以我希望 48px 图像位于 72px 内部的中心,而不进行缩放。为此,我只是尝试改变scaleType
in the ImageView
上面只是center
,但图像无论如何都会缩放。
我的最终问题是,解决上述问题的正确方法是什么?我怎样才能拥有ldpi
and mdpi
图像以其各自的密度使用,但设备正在运行hdpi
选取可用的最大图像(即mdpi
的)并防止任何缩放,只需将图像安装在中心ImageView
?
EDIT:
我自己回答了这个问题,但这可能是其他来这里的人正在寻找的答案。但我确实提供了一些关于实际发生的情况和根本问题的见解。如果可以的话,请查看并提供解决方法/修复程序。我赌你 :)
事实证明这个问题是一个非问题,我向发现它的任何人道歉,希望接受的答案将是他们正在寻找的答案,而事实并非如此。
为了明确起见,scaleType=centerInside
正在按预期工作。也就是说,如果您的图像小于ImageView
本身,该图像不会缩放到ImageView
,它将保留在中心并且不缩放。
但为了使上述工作按预期工作,drawable 必须放置在nodpi
文件夹。我知道这并不总是可以接受的。因此,当该可绘制对象必须放入其中一个密度文件夹而不是nodpi
文件夹,将scaleType
属性仅在特定情况下起作用。
什么时候起作用:
- 您正在设备/模拟器上运行该应用程序
Xdpi
密度和
有一个可绘制的Xdpi
密度文件夹(此处X
means,
l
, m
, h
甚至xh
).
- 您正在运行应用程序设备/模拟器,
例如,与
hdpi
密度,但没有可绘制的hdpi
文件夹,系统会从nodpi
文件夹(并不总是知道它将选择哪个文件夹
从)。
当它不起作用时:
- 例如,您正在运行应用程序设备/模拟器
hdpi
密度,但没有可绘制的hdpi
文件夹和
系统从任何其他密度中选择替代可绘制对象
文件夹(不是nodpi
文件夹),可绘制对象将缩放到ImageView
界限和scaleType
属性不会做
任何事物。
总之,我的问题没有“正确”的答案,这实际上取决于您想要实现的目标。答案my不过问题是,我只需要做两件事:a)设置ImageView
scaleType
to centerInside
b) 复制所有可绘制对象mdpi
文件夹放入hdpi
文件夹(如上所述,scaleType=centerInside
将使之发挥作用)。
当然,复制可绘制对象并不是最佳选择,但我找不到任何其他解决方案,到目前为止,也没有其他人可以......所以,目前,我会将其标记为已接受。
那么最佳答案/解决方案是什么?
在我看来,如果设备/模拟器正在运行hdpi
并且没有匹配的可绘制对象hdpi
文件夹应该从mdpi
文件夹而不缩放它,允许scaleType
做这件事的属性。或者可能强制系统转到nodpi
文件夹,如果在相应的密度文件夹中找不到匹配的可绘制对象,这也可能是一个解决方案。
因此,如果有人能够提供解决此问题的方法/修复方案,那将是真正正确的答案。如果到了那个时候,我会改变接受的状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)