3

我有一个显示行的 ListView

这是xml:

 ...
  <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="5dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:orientation="vertical" >

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight=".30">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:background="@drawable/face"
                android:scaleType="centerCrop" />
        </FrameLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight=".70"
            android:background="@color/white"
            android:padding="4dp" >

            // Other views...

        </LinearLayout>
    </LinearLayout>
    …

并得到这个结果:

在此处输入图像描述

这是原始图像

在此处输入图像描述

需要的是没有缩放的图像,就像这样:

在此处输入图像描述

我正在使用 android:ScaleType = "centerCrop" 我用 android:adjustViewBounds = "true" 和许多其他参数进行测试,但从未成功

想法?

提前致谢

4

4 回答 4

3

将您的图像设置为android:src而不是android:background.

<ImageView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:src="@drawable/face"
                android:scaleType="centerCrop" />

所有视图都可以拍摄背景图片

srcto anImageView具有附加功能:

  • 不同的缩放类型
  • adjustViewBounds用于设置边界以匹配图像尺寸
  • 一些转换,例如 alpha 设置

您可能会在文档中找到更多内容。

于 2013-05-09T10:28:53.620 回答
0

更改 android:background="@drawable/face"android:src="@drawable/face" Scale 类型仅适用于android:src

于 2013-05-09T10:28:47.157 回答
0

您可以使用android:src而不是android:background设置您的可绘制对象。就像是:

<ImageView  android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:src="@drawable/face"
            android:scaleType="centerCrop" />

另外,为什么不直接使用 Photoshop 等图像编辑软件裁剪图像并使用该图像呢?应避免动态缩放和操作图像,以尽可能防止大量使用系统资源。

于 2013-05-09T10:31:21.397 回答
0

我认为,您的问题是在 LinearLayout 和 FrameLayout 中插入了权重。请使用无权重的 RelativeLayout。系统无法裁剪您的图片,因为系统无法测量 ImageView 并且无法将他与您的图片进行比较。总而言之,系统认为“这是图片和 ImageView 相等的”。我已经这样做了:

 <RelativeLayout        
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:padding="5dp">

      <ImageView 
          android:id="@+id/image"
          android:layout_height="50dp"
          android:layout_width="match_parent"
          android:src="@drawable/photo"
          android:scaleType="centerCrop"
          android:contentDescription="@string/app_name"
          android:layout_alignParentTop="true"
          />
      <TextView android:layout_height="150dp"
          android:layout_width="match_parent"
          android:text="@string/text"
          android:layout_below="@id/image"
          android:maxLength="350"
          android:layout_marginTop="5dp"/>

</RelativeLayout>
于 2013-05-09T11:15:43.173 回答