保持不同屏幕的图像视图之间的大小比例

时间:2010-11-29 11:51:34

标签: android

在我的应用程序中,我有一个布局,包含3个不同高度的图像视图(苹果,酒,鱼),底部对齐。布局高度是恒定的。这个布局在hdpi屏幕上看起来不错,但我想在mdpi上使用相同的图像。问题是,在mdpi上,某些图像视图可能会缩小比例,并且图像视图之间的比例将不同。因此,如果葡萄酒缩小,苹果可能会像酒瓶一样高。避免这种情况的最佳方法是什么?我想在运行时为图像设置相同的高度(最大高度)。然后,他们将全部缩放,并保持比例。这是可能的吗?我希望这很清楚。谢谢。

1 个答案:

答案 0 :(得分:4)

刚设置:

android:scaleType="fitCenter"

在每个ImageView上。无论高度如何,它们都会按比例调整大小。

编辑:为了澄清加权问题,假设您有三个图像(鱼,苹果,瓶子),我们称之为F,A和B.

让我们知道:

  

F应该是A的2倍   应该是B的一半高。

所以我们知道F应该与B的高度相同,而A应该是B的高度的一半。我们可以给予F和B相等的权重(1),并且A的权重为一半(0.5)。为了简化,我们可以乘以2得到整数,因此F和B的权重为2,A的权重为1.这样,无论你设置LinearLayout的高度是多少,图像都应该保持成比例。其他。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="200dp"
    android:orientation="vertical"
    >
    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:src="@drawable/fish"
        android:scaleType="fitCenter"
        />
    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:src="@drawable/apple"
        android:scaleType="fitCenter"
        />
    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:src="@drawable/bottle"
        android:scaleType="fitCenter"
        />
</LinearLayout>

我相信这就是你所要求的,但我可能还是错了。