我有一个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>
我在这里缺少什么?
答案 0 :(得分:11)
如果图像大于视图,则可以使用以下方法对其进行缩放:
android:scaleType="fitXY"
如果图像较小,那将无法满足您的需求。也许您可以在运行时检测到并以编程方式更改scaleType。
答案 1 :(得分:11)
尝试使用比例类型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的左边缘定义。