2012-02-24 53 views
0

在我的应用程序中,我使用以下XML构建了一个按钮栏作为我的UI的一部分(请注意,这不是整个布局,只是它的按钮栏部分):Android:按钮上的奇怪缩放比例topDrawable

<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屏幕上测试时,这会产生合理的正确结果。按钮栏看起来是这样,这正是我想要的:

enter image description here

但是与480×800分辨率屏幕的设备上,同样的按钮栏看起来是这样的:

enter image description here

什么真正的bizzarre是如何显示四个按钮。前三幅图像缩小,最后一幅全幅显示。

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

非常感谢您的任何帮助。

+0

一个可能的原因是'场所信息'的图像不存在于drawable-hdpi文件夹中,所以来自drawable或drawable-mdpi的图像正在放大(反之亦然) – tonys 2012-02-24 10:36:52

回答

0

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

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

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

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