首先,这里有一个图解来说明我的问题: Graphic
在左侧图片上,您可以看到它应该如何显示。这也是AndroidStudio在预览中显示的方式。但是,如果我在模拟器上运行它,它会裁剪图像,只留下深绿色部分。 (右图)
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/img_header"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:focusableInTouchMode="false"
android:src="@drawable/header"
android:adjustViewBounds="true"
android:scaleType="centerCrop" />
父视图:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".menu">
我尝试了不同的scaleTypes,但没有任何东西可以让我得到我想要的结果。 这不是我第一次使用ImageViews,但我第一次无法自己解决问题......
如果我删除&#34; adjustViewBounds&#34;预览显示与设备/模拟器相同的结果。如果这是某人的暗示。
编辑:我创建了第二个版本的标题,它的大小是它的两倍。现在它适用于&#34; fitXy&#34;和&#34; adjustViewBound(true)&#34;。但为什么?原始图像的高度为512px,这应该足以使adjustViewBounds保持纵横比。
答案 0 :(得分:0)
听起来你想要CENTER_INSIDE:
android:scaleType="centerInside"
public static final ImageView.ScaleType CENTER_INSIDE
在API级别1中添加统一缩放图像(维护图像) 纵横比)使图像的两个尺寸(宽度和高度) 将等于或小于视图的相应维度 (减去填充)。然后图像在视图中居中。从XML,使用 语法:android:scaleType =“centerInside”。
同时强>
问题可能是adjustViewBounds不会增加ImageView的大小超出drawable的自然尺寸。