如何在 Android 中水平滚动 ImageView?
Posted
技术标签:
【中文标题】如何在 Android 中水平滚动 ImageView?【英文标题】:How to scroll ImageView horizontal in Android? 【发布时间】:2019-01-25 03:59:42 【问题描述】:在我的应用程序中,我想将图像从服务器显示到ImageView
。
我的 imageView
填满整个屏幕,为此我使用 android:scaleType="centerCrop"
。
但是当使用centerCrop
时不能显示所有的图像细节?
我希望通过用户手指在imageView
上自动(以正常速度)水平滚动。
我的 XML 代码:
<ImageView
android:id="@+id/wallpaperDetail_img"
android:layout_
android:layout_
android:scaleType="centerCrop" />
我的完整 XML 代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".activity.Wallpapers.WallpaperDetailActivity">
<include
android:id="@+id/wallpaperDetail_toolbar"
layout="@layout/toolbar_simple" />
<HorizontalScrollView
android:layout_
android:layout_below="@id/wallpaperDetail_toolbar"
android:layout_>
<ImageView
android:id="@+id/wallpaperDetail_img"
android:layout_
android:layout_
android:scaleType="centerCrop" />
</HorizontalScrollView>
<ProgressBar
android:id="@+id/wallpaperDetail_loader"
android:layout_
android:layout_
android:layout_centerInParent="true"
android:visibility="gone" />
<io.github.yavski.fabspeeddial.FabSpeedDial
android:id="@+id/wallpaperDetail_fabMenu"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:visibility="gone"
app:fabGravity="bottom_end"
app:fabMenu="@menu/menu_wallpaper_detail"
app:miniFabBackgroundTintList="@array/fab_menu_item_colors"
app:fabBackgroundTint="@color/catMenuColor2"
app:miniFabDrawableTint="@android:color/white"
app:miniFabTitleTextColorList="@array/fab_menu_item_colors"
app:touchGuardDrawable="@drawable/background" />
</RelativeLayout>
我从服务器获取图像的 java 代码:
Glide.with(context)
.load(imageUrl)
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(wallpaperDetail_img);
如何在ImageView
上水平滚动?我该怎么办?
【问题讨论】:
比在WebView
中加载你的图片
@NileshRathod,你能发给我设置图像到 WebView java 代码吗?请
***.com/questions/35037260/… 和这个***.com/a/10764224/7666442
@NileshRathod,谢谢,但我想使用 imageView!你能把库或代码发给我吗?
【参考方案1】:
使用HorizontalScrollView
:
<HorizontalScrollView
android:layout_
android:layout_>
<ImageView
android:id="@+id/wallpaperDetail_img"
android:layout_
android:layout_
android:scaleType="centerCrop"
android:src="@drawable/your_image" />
</HorizontalScrollView>
【讨论】:
谢谢,但我想填满整个屏幕,使用 centerCrop,没有矩阵。你能帮帮我吗? 使用 centerCrop。有什么问题? 使用 centerCrop 时不滚动。但是当使用矩阵时,我可以在 ImageView 上滚动 是的,如果有要滚动的内容,您可以。我现在就在做。 复制粘贴以上代码,更改drawable名称并测试【参考方案2】:你可以这样做
horizontalScrollView (HorizontalScrollView)findViewById(R.id.horizontal_grid);
int[] images = new int[]R.drawable.image1, R.drawable.image2,
....R.drawable.image10;
LinearLayout sv = (LinearLayout) findViewById (R.id.horizontal_container);
for (int i=0 ; i<images.length; i++)
ImageView iv = new ImageView (this);
LinearLayout.LayoutParams imageViewLayoutParams = new
LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
iv.setPadding(4,0,0,0);
iv.setImageResource(images[i]);
iv.setLayoutParams(imageViewLayoutParams);
sv.addView(iv);
你的 xml 应该看起来像这样
<HorizontalScrollView
android:id="@+id/horizontal_grid"
android:layout_
android:layout_
android:layout_weight="40">
<LinearLayout
android:id="@+id/horizontal_container"
android:layout_
android:layout_
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>
【讨论】:
以上是关于如何在 Android 中水平滚动 ImageView?的主要内容,如果未能解决你的问题,请参考以下文章