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