的Android ImageView的尺寸不与源图像缩放的Android ImageView的尺寸不

2019-05-13 08:50发布

我有一个的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的高度,这样我可以计算自定义图像所需的宽度是多少?

谢谢如果你已经成功地远阅读。 更感谢,如果你能指出我一个解决的方向!

Answer 1:

怎么样改变你的ImageViews使用android:layout_height="fill_parent"

编辑 -我花了一段寻找,但查看源帮我找出adjustViewBounds 。 你可能想尝试添加android:adjustViewBounds="true"到你的ImageViews。 出人意料的是,这个默认为false。



Answer 2:

奇怪的是android:layout_height="fill_parent"android:adjustViewBounds="true"没有帮助。 我有问题渐渐显示的图像,但对图像的底部顶部和小排黑块体行。 设置规模类型为"centerCrop"帮助了我。 我想,是我的图像大小的原因是小的。



Answer 3:

我有类似的问题,我的解决办法是设定android:scaleType="fitEnd"在XML布局文件的ImageView的属性。



文章来源: Android ImageView size not scaling with source image