无论图像大小如何,ImageView都是固定大小

Pau*_*ett 15 android

我有一个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>
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

kgi*_*kis 11

如果图像大于视图,则可以使用以下方法对其进行缩放:

android:scaleType="fitXY" 
Run Code Online (Sandbox Code Playgroud)

如果图像较小,那将无法满足您的需求.也许您可以在运行时检测到它并以编程方式更改scaleType.


kco*_*ock 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>
Run Code Online (Sandbox Code Playgroud)

这会导致图像仅在大于布局时缩小,并且它也会按比例缩放(而fitXY缩放则不考虑宽高比).如果尺寸较小,它也会使图像居中.

编辑:我已经为你想要的东西更新了这个例子.这是改变的要点:

•ImageView重力变为right|center_vertical.由于您希望它们在右侧对齐,因此使用此重力即使它们是纵向图像也是如此.

•ImageView对齐RelativeLayout的右侧

•RelativeLayout设置为,wrap_content因为它将用于ListView.

•添加了TextView,与父项左边对齐,右边缘由itemImage的左边缘定义.