Как прокрутить ImageView по горизонтали в Android?

В моем приложении я хочу показать изображение с сервера в ImageView,
мой imageView заполнить весь экран и для этого я использую android:scaleType="centerCrop",

Но когда использовать centerCrop не показать все детали изображения?

Я хочу горизонтальную прокрутку imageView автоматически (с нормальной скоростью) от пальца пользователя.

Мой код XML:

<ImageView
    android:id="@+id/wallpaperDetail_img"
    android:layout_width="match_parent"
    android:layout_height="patch_parent"
    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_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activity.Wallpapers.WallpaperDetailActivity">

    <include
        android:id="@+id/wallpaperDetail_toolbar"
        layout="@layout/toolbar_simple" />

    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_below="@id/wallpaperDetail_toolbar"
        android:layout_height="match_parent">

        <ImageView
            android:id="@+id/wallpaperDetail_img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="centerCrop" />
    </HorizontalScrollView>

    <ProgressBar
        android:id="@+id/wallpaperDetail_loader"
        android:layout_width="@dimen/size25"
        android:layout_height="@dimen/size25"
        android:layout_centerInParent="true"
        android:visibility="gone" />

    <io.github.yavski.fabspeeddial.FabSpeedDial
        android:id="@+id/wallpaperDetail_fabMenu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        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? Как я могу это сделать?

2 ответа

Использовать HorizontalScrollView:

<HorizontalScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/wallpaperDetail_img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop"
        android:src="@drawable/your_image" />
</HorizontalScrollView>

Вы можете сделать что-то вроде этого

        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_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="40">
    <LinearLayout
        android:id="@+id/horizontal_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >
    </LinearLayout>

</HorizontalScrollView>
Другие вопросы по тегам