在不同的屏幕分辨率下保持按钮的圆形图像比例

时间:2011-12-20 20:27:23

标签: android image android-layout aspect-ratio android-resolution

我有一个带有背景图像.png的图像按钮。我在不同的分辨率屏幕上进行测试,每个屏幕看起来都不一样。它们中的大多数通过在一个维度上拉伸来扭曲圆形。

处理此问题的正确方法是什么?我熟悉最高质量图像所需的3个密度级别,但我认为问题在于图像按钮本身或父容器上的布局类型属性。

来自main.xml的片段......

<LinearLayout
    android:id="@+id/buttonArea"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:orientation="vertical"
    android:padding="30dp">

    <ImageButton
        android:id="@+id/button1"
        android:background="@drawable/button_inactive"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_gravity="center"/>

</LinearLayout>

从大多数情况下从ImageButton中删除layout_weight属性,但不是全部。似乎填充仍在改变圆的比例。比例类型无效。是因为我的图像被设置为背景而不是src?

2 个答案:

答案 0 :(得分:3)

我认为你的ImageButton中的android:layout_weight =“1”就是这个原因。无论屏幕大小如何,它都会使您的ImageButton与屏幕大小相同。

尝试删除该属性。如果这不能解决您的问题,请查看android:scaleType属性

<ImageButton
    android:id="@+id/button1"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:layout_gravity="center"
    android:background="@null"
    android:src="@drawable/button_inactive"
    android:scaleType="centerInside"/>

答案 1 :(得分:2)

您可以将ImageView的scaleType属性设置为图片的one that keeps the aspect ratio。 它们都表现略有不同,所以你必须使用一个适合你需要的(CenterInside是一个很好的开始)。

如果这不起作用,您始终可以指定图像的设置高度/宽度(例如layout_width =“128dp)。