可绘制的图像不能在平板电脑上重新缩放

时间:2012-07-18 12:05:51

标签: android image user-interface drawable

我正在阅读Supporting Multiple Screens的Android文档页面,并声明:

  

“默认情况下,Android会缩放您的位图drawables(.png,.jpg和.gif文件)和Nine-Patch drawables(.9.png文件),以便它们在每个设备上以适当的物理大小呈现。”

     
     

“如有必要,系统会根据当前的屏幕密度将可绘制资源缩放到适当的大小。”

最近,我们一直在为我们的应用添加平板电脑功能。在横向模式中(也用于肖像,但我将使用横向作为示例),我们在屏幕左侧有一个带有文本的图像,右边有一个按钮。简单。在开发这个XML布局时,我得到了这个图像(在Eclipse的XML编辑器的图形布局部分),在我的10英寸平板电脑上运行应用程序时会发生什么:

What I expect to see.

然而,当我在Acer Iconia A200上运行我的应用程序时,我得到更像这个截图的内容:

What I end up seeing.

事实上,您在第二个屏幕截图中看到的“图像”看起来与我在Android 2.2 MyTouch手机上看到的图像大小完全相同(如果不完全相同)。

因此,我的问题是,为什么Android不会像在XML编辑器的图形布局中那样重新调整图像大小(如第一个屏幕截图中所示)?

我尝试过的事情:

  • 我已将适当缩放的可绘制图片添加到每个drawable-_ _ _ _文件夹中。不过,图像看起来一样。
  • 我已将图片添加到ldpi,希望它可以扩展到更高分辨率的平板电脑 - 它没有。
  • 我目前在drawable文件夹中没有该单张图片(没有扩展名)。不过,同样的行为仍然存在。

有什么建议吗?


编辑:

代码:

<LinearLayout
    android:id="@+id/leftLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/ImageViewLogo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="4dp"
        android:layout_marginTop="10dp"
        android:background="@android:color/transparent"
        android:contentDescription="@+string/logo"
        android:scaleType="fitCenter"
        android:src="@drawable/logo_red" />

    <RelativeLayout
        android:id="@+id/layoutBelowImage"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginBottom="20dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:gravity="center" >

        ... 4 TextViews here...

    </RelativeLayout>
</LinearLayout>

1 个答案:

答案 0 :(得分:1)

使用scaleType上的适合 ImageView之一。在这种情况下,您可能希望使用fitCenter来保持宽高比。

模拟器和真实设备之间仍然存在一些不一致。

要避免使用wrap_content同时保持ImageViewfitCenter)的宽高比,您可以尝试以下几点:

  • 将其设为fill_parent。在LinearLayout中使用权重(建议避免使用嵌套权重但不重要)。
  • 将其设为fill_parent。正确使用layout_abovelayout_below
  • 创建一个扩展ImageView的自定义视图,并在OnMeasured中设置正确的宽高比。
  • 设置固定的宽度和高度dp(最简单的)。