如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS swift中水平滚动图像

在 tableview 中水平滚动以及正常的垂直滚动

在 SwiftUi 中水平组合和打破垂直滚动视图?

IOS中水平滚动视图问题内的滑块

android中水平recyclerview的问题

如果文本溢出,则在 UITableViewCell 中水平滚动 UITextField