Как прокрутить 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>