【问题标题】:Android: strange scaling issue on button with topDrawableAndroid:带有topDrawable的按钮上出现奇怪的缩放问题
【发布时间】:2012-02-24 09:53:30
【问题描述】:

在我的应用程序中,我正在使用以下 XML 构建一个按钮栏作为 UI 的一部分(请注意,这不是整个布局,只是按钮栏的一部分):

<LinearLayout android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_centerHorizontal="true"
    android:paddingTop="10dp">

    <Button android:id="@+id/btnTopObjects"
        android:layout_width="70dp"
        android:layout_height="55dp"
        android:drawableTop="@drawable/media_guide_object"
        android:text="@string/media_screen_top_objects"
        android:background="@drawable/media_guide_button"
        android:textSize="9dp"/>

    <Button android:id="@+id/btnTrails"
        android:layout_width="70dp"
        android:layout_height="55dp"
        android:drawableTop="@drawable/media_guide_trail"
        android:text="@string/media_screen_trails"
        android:background="@drawable/media_guide_button"
        android:layout_marginLeft="5dp"
        android:textSize="9dp" />

    <Button android:id="@+id/btnEvents"
        android:layout_width="70dp"
        android:layout_height="55dp"
        android:drawableTop="@drawable/media_guide_event"
        android:text="@string/media_screen_events"
        android:background="@drawable/media_guide_button"
        android:layout_marginLeft="5dp"
        android:textSize="9dp" />

    <Button android:id="@+id/btnVenueInfo"
        android:layout_width="70dp"
        android:layout_height="55dp"
        android:drawableTop="@drawable/media_guide_venue"
        android:text="@string/media_screen_venue_info"
        android:background="@drawable/media_guide_button"
        android:layout_marginLeft="5dp"
        android:textSize="9dp" />
</LinearLayout>

当我在 320x480 屏幕上测试它时,这会产生相当正确的结果。按钮栏看起来是这样的,这正是我想要的:

但是在具有 480x800 分辨率屏幕的设备上,相同的按钮栏看起来像这样:

真正奇怪的是四个按钮的显示方式。前三张图片按比例缩小,最后一张全尺寸显示。

所有 4 个图像都是在同一个图形程序中以相同的方式创建的。它们都是 31x31 像素 72dpi。如果它们都根据设备像素密度按比例缩小,我没有问题,但我希望 4 个图像的大小相同!我怎样才能做到这一点?

非常感谢您的任何帮助。

【问题讨论】:

  • 一个可能的原因是 drawable-hdpi 文件夹中不存在“venue info”的图像,因此 drawable 或 drawable-mdpi 中的图像被放大(反之亦然)跨度>

标签: android image button image-scaling


【解决方案1】:

好的,我追查到以下问题。

一旦从 XML 创建视图,然后在某些条件下的代码中,我将图像加载到 Bitmap 并对其执行一些操作,然后使用 setCompoundDrawable 方法将此 Bitmap 作为 BitmapDrawable 设置到按钮中。

当 XML 首次加载并设置到视图中时,所有四个图像都像最后一个按钮(大图像)一样显示。当我加载位图时,对其执行一些转换并将其设置为按钮的可绘制对象 - 这是根据设备的屏幕密度缩小它的时候。碰巧前三个按钮调整了drawable,而最后一个不需要。

我修改了代码以始终加载位图,然后将可绘制对象设置到按钮上 - 对于所有按钮,无论它们是否需要调整。这样,所有四个按钮都不会显示相同大小的图像(根据屏幕密度缩放 - 但大小相同)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多