我在LinearLayout中有一些ImageViews。我需要按比例缩小ImageViews,以便它们在垂直安装到LinearLayout中的同时保持其长宽比。在水平方向上,我只需要它们彼此相邻即可。
我为此做了一个简化的测试台,它嵌套了加权版面,因此我为ImageViews设置了一个宽但不是很高的LinearLayout-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="5">
<LinearLayout android:id="@+id/linearLayout3" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_weight="1">
<ImageView android:id="@+id/imageView1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/test_image" android:scaleType="fitStart"></ImageView>
<ImageView android:id="@+id/imageView2" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/test_image" android:scaleType="fitStart"></ImageView>
</LinearLayout>
<LinearLayout android:id="@+id/linearLayout4" android:layout_height="fill_parent" android:layout_width="fill_parent" android:layout_weight="1"></LinearLayout>
</LinearLayout>
<LinearLayout android:id="@+id/linearLayout2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"></LinearLayout>
</LinearLayout>
(在Eclipse布局编辑器中,图像是垂直剪切的,根本没有缩放-但这只是我们学到的特质之一)
在硬件上运行时,图像会缩放到正确的高度,同时保留其宽高比。我的问题是它们彼此不相邻。每个ImageView的高度与LinearLayout的高度正确匹配。每个ImageView的宽度是未缩放图像的宽度-实际按比例缩小的图像显示在其ImageViews的左侧。因此,图像之间的差距越来越大。
理想情况下,我希望通过XML进行管理,如果不可能的话,我知道使用自定义视图可能是最好的解决方案。
我尝试创建一个覆盖onMeasure的IconView(扩展ImageView)类,以便可以根据高度缩放宽度来创建所需大小的图像视图。但是传递给函数的parentWidth和parentHeight是屏幕的尺寸,而不是LinearLayout容器的尺寸。
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
// Calculations followed by calls to setMeasuredDimension, setLayoutParams
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
所以我的问题是-
1)我可以以某种方式修改XML以使其满足我的需要吗?
2)如何使自定义类获得LinearLayout的高度,以便可以计算自定义图像的必要宽度?
谢谢,如果您已成功阅读了此书。如果您能向我指出解决方案的方向,那就更加感谢!
android:adjustViewBounds="true"
调整图像的高度