我有一个的LinearLayout里面几个ImageViews。 我需要按比例缩小ImageViews使他们保持自己的高宽比,而垂直的LinearLayout中内配合。 水平,我只需要他们彼此相邻。
我做了一个简单的测试床,这里面嵌套加权布局,使我有一个广泛的,但个子不是很高,LinearLayout中的ImageViews -
<?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虽然来管理这一点,如果这是不可能的,据我所知,使用自定义视图可能是最好的解决方案。
我试图创建一个图标型控件(延伸的ImageView)类,它覆盖onMeasure这样我可以通过缩放取决于高度的宽度创建必要的尺寸的图像视图。 但上级宽度及上级高度被传递到函数是屏幕的尺寸,而不是的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的高度,这样我可以计算自定义图像所需的宽度是多少?
谢谢如果你已经成功地远阅读。 更感谢,如果你能指出我一个解决的方向!