为啥添加ScrollView时ImageView Image Zoomed?

Posted

技术标签:

【中文标题】为啥添加ScrollView时ImageView Image Zoomed?【英文标题】:Why does ImageView Image Zoomed when ScrollView added?为什么添加ScrollView时ImageView Image Zoomed? 【发布时间】:2020-09-07 18:14:06 【问题描述】:

我想滚动我的卡片视图,但是当我添加了 ScrollView 时,我在 ImageView 中的图像会被缩放/拉伸。以下屏幕截图代表我的问题。

ImageView before adding ScrollView

ImageView after adding Scrollview

我的 Activity.xml

<LinearLayout
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context=".OrbitPostViewer">

<androidx.cardview.widget.CardView
        android:layout_margin="10dp"
        android:layout_
        android:layout_>

        <ScrollView
            android:fillViewport="true"
            android:layout_
            android:layout_>

        <LinearLayout
            android:orientation="vertical"
            android:padding="10dp"
            android:layout_
            android:layout_>

            <ImageView
                android:layout_marginTop="10dp"
                android:id="@+id/orbitPostSharedImg"
                android:layout_gravity="center_horizontal"
                android:scaleType="centerCrop"
                android:src="@drawable/rabindranath_tagore"
                android:layout_
                android:layout_/>

</LinearLayout>
        </ScrollView>
    </androidx.cardview.widget.CardView>
</LinearLayout>

如上代码所示。我还将fillViewport 添加为true,但它仍然无法正常工作。当我删除滚动视图但我无法滚动时,CardView 工作正常。

我该如何解决这个问题?

【问题讨论】:

这是实际的图片尺寸吗? 图像尺寸为 1071 x 1500 像素。但是不同尺寸的图片在 Image View 上的表现也是一样的。 【参考方案1】:

您可以将android:layout_gravity="center" 用于包含imageview 的线性布局并将比例类型更改为centerInsidefitCenter

<LinearLayout
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context=".MainActivity">

    <androidx.cardview.widget.CardView
        android:layout_margin="10dp"
        android:layout_
        android:layout_>

        <ScrollView
            android:fillViewport="true"
            android:layout_
            android:layout_>

            <LinearLayout
                android:orientation="vertical"
                android:padding="10dp"
                android:layout_gravity="center"
                android:layout_
                android:layout_>

                <ImageView
                    android:layout_marginTop="10dp"
                    android:id="@+id/orbitPostSharedImg"
                    android:layout_gravity="center_horizontal"
                    android:scaleType="centerInside"
                    android:src="@drawable/rabindranath_tagore"
                    android:layout_
                    android:layout_/>

            </LinearLayout>
        </ScrollView>
    </androidx.cardview.widget.CardView>
</LinearLayout>

【讨论】:

【参考方案2】:

将 ImageView scaleType 从 centerCrop 更改为 centerInside

【讨论】:

以上是关于为啥添加ScrollView时ImageView Image Zoomed?的主要内容,如果未能解决你的问题,请参考以下文章

使用scrollview启动活动后,我的应用程序崩溃了

隐藏导航栏而不移动scrollView

iOS Swift 仿微信朋友圈实现图片点击放大查看

如何从 ScrollView 中的 ImageView 中选择项目?

当 contentMode 为 AspectFill 时在 ScrollView 内平移 ImageView

当我将 ImageView 添加到 CardView 或 Fragment 时,为啥我的应用程序会崩溃?