在 Android 上使用 scaletype centerCrop 时如何调整 ImageView 的裁剪量?

Posted

技术标签:

【中文标题】在 Android 上使用 scaletype centerCrop 时如何调整 ImageView 的裁剪量?【英文标题】:How to adjust how much an ImageView is cropped by when using scaletype centerCrop on Android? 【发布时间】:2020-07-27 18:55:52 【问题描述】:

我在 LinearLayout 中有一个 ImageView (PhotoView),并且我正在应用 scaletype 中心裁剪,但裁剪得有点过多并且显得过于放大。我该如何解决这个问题?

       <LinearLayout
           android:id="@+id/photoViewContainer"
           android:layout_
           android:layout_
           android:background="@android:color/holo_purple"
           app:layout_constraintBottom_toBottomOf="parent"
           app:layout_constraintEnd_toEndOf="parent"
           app:layout_constraintStart_toStartOf="parent"
           app:layout_constraintTop_toTopOf="parent"
           app:layout_constraintVertical_bias="0.0">
               <com.github.chrisbanes.photoview.PhotoView
                   android:id="@+id/mainImageView"
                   android:layout_
                   android:layout_
                   android:scaleType="centerCrop"
                   android:adjustViewBounds="true"
                   android:background="@android:color/black" />
       </LinearLayout>

【问题讨论】:

【参考方案1】:

我不确定您是否可以控制裁剪,但使用 scaletype="fitXY" 并提供一些填充对我有用。

<com.github.chrisbanes.photoview.PhotoView
                   android:id="@+id/mainImageView"
                   android:layout_
                   android:layout_
                   android:scaleType="fitXY"
                   android:padding="16dp"
                   android:adjustViewBounds="true"
                   android:background="@android:color/black" />

在这种情况下,scaletype="fitXY" 会将图像压缩到屏幕大小并填充它以使其居中。 还有一个我听说过的hack,你用负填充替换填充,这会缩小图像,但我没有尝试过。

【讨论】:

以上是关于在 Android 上使用 scaletype centerCrop 时如何调整 ImageView 的裁剪量?的主要内容,如果未能解决你的问题,请参考以下文章

android 怎么裁剪drawable

Android 4.3 ImageView ScaleType.MATRIX

图文讲解Android ImageView的ScaleType,帮你彻底搞明白

Android:ImageView控件的ScaleType属性使用详解

Android_scaleType属性

android:scaleType="centerCrop"