ImageView是一个固定的大小,不管图像大小
我有一个ImageView,我希望它的大小始终相同。如果图像小于视图,我希望它在视图中居中。如果图像大于视图,那么我希望它缩小比例 - 保留宽高比。ImageView是一个固定的大小,不管图像大小
我在这过几次尝试自己 - 最近的一项是:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:id="@+id/itemImage" android:layout_width="100dp"
android:layout_height="100dp" android:scaleType="fitCenter"
android:adjustViewBounds="true" android:gravity="center" android:padding="10px" />
<TextView android:id="@+id/currentLentItem" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:padding="10px"/>
</LinearLayout>
缺少什么我在这里?
尝试使用位阶类型centerInside
,象下面这样:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<ImageView
android:id="@+id/itemImage"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentRight="true"
android:scaleType="centerInside"
android:gravity="right|center_vertical"
android:padding="10px"
/>
<TextView
android:id="@+id/currentLentItem"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/list_image"
android:padding="10px"
/>
</RelativeLayout>
这会导致图像按比例缩小仅当比布局更大,并且它会按比例缩放,以及(而fitXY缩放而不考虑方面比)。如果更小,它也会将图像居中。
编辑:我已经更新了像你想要的东西的例子。以下是改变的要点:
•ImageView引力改为right|center_vertical
。既然你想让它们在右边对齐,即使它们是纵向定位图像,使用这种重力也会允许它们。
•ImageView的对齐的RelativeLayout的
•RelativeLayout的右侧设置为wrap_content
因为它是用于一个ListView。
•添加了TextView,与父项左侧对齐,其右边缘由itemImage的左边缘定义。
谢谢你 - 它看起来更好。尽管如此,View仍然不是一个固定的大小。从上面的示例中可以看到,ImageView紧挨着一个TextView,并且它显示在一个ListView中。我希望ImageViews的右边缘彼此排列在一起,这样一切都看起来整洁而统一...... – 2010-11-17 09:51:06
Paul,我添加了一个可以尝试的更新示例;这应该让你更接近你要找的东西。 – kcoppock 2010-11-17 14:20:01
谢谢。尽管如此,ImageViews的尺寸仍然不尽相同。我需要他们都是完全相同的宽度。我原以为layout_width会设置 - 但它显然不会... – 2010-11-17 16:43:52
如果图像超过视图大小,那么你可以使用它的规模:
android:scaleType="fitXY"
不会给你想要的东西,如果图像较小。也许你可以在运行时检测到,并以编程方式更改scaleType。
有没有办法在这些线程上“碰撞”...? – 2010-11-22 19:26:29
如何在运行时更改它? – 2012-02-11 05:43:53
imageView.setScaleType(ScaleType.FIT_XY); – 2015-04-07 06:16:53
您是否得到了满意的解决方案? – nwaltham 2012-01-15 21:03:04