为啥添加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 的线性布局并将比例类型更改为centerInside
或fitCenter
<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 中的 ImageView 中选择项目?