我正在viewpager内使用imageview,我想在图像视图内部显示图像中心,但其显示效果不佳。 Imageview在imageView的左侧和右侧提供空白。但在某些情况下,它显示出很好的视野。
这是我的viewpagerAdapter
private class ImagePagerAdapter extends PagerAdapter {
public ImagePagerAdapter(){
}
@Override
public int getCount() {
if(visibleImagesCount==0){
return 1;
}
return visibleImagesCount;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((RelativeLayout) object);
}
/**
* Following method is responsible to load images into ViewPager
* @param container
* @param position
* @return
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
final Context context = getActivity();
LayoutInflater inflater = (LayoutInflater) getActivity()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout relativeLayout= (RelativeLayout) inflater.inflate(R.layout.view_pager_fragment,null);
final ImageView imageView= (ImageView)relativeLayout.findViewById(R.id.view_pager_image_view_show);
RequestManager glide=Glide.with(getContext());
{
List<Image> list = dbHelper.getAllVisibleImagesList();
Image image = list.get(position);
final String filePath = Constants.Path.IMAGE_LOADING_PATH + imageName;
Bitmap bitmap;
if(image.getImageStatus() != ImagesStatus.STATUS_IMAGE_ADDED.getStatus())
bitmap = ImageUtils.getBitmap(thumbURL);
else
bitmap= BitmapFactory.decodeResource(context.getResources(), R.drawable.black_image);
Drawable d = null;
if(bitmap != null /*&& image.getImageStatus() != ImagesStatus.STATUS_IMAGE_ADDED.getStatus()*/){
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
float dpHeight = displayMetrics.heightPixels / displayMetrics.density;
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
float scale = getResources().getDisplayMetrics().density;
int marginHeightP = (int) (dpHeight * scale + 0.5f);
int marginWidthP = (int) (dpWidth * scale + 0.5f);
d = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, marginWidthP, marginHeightP, true));
} else{
d = (getResources().getDrawable(R.drawable.pikard));
}
glide.load(filePath)
.placeholder(d)
.fitCenter()
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, com.bumptech.glide.request.target.Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, com.bumptech.glide.request.target.Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
pb.setVisibility(View.GONE);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
return false;
}
}).into(imageView);
}
}
container.addView(relativeLayout, 0);
return relativeLayout;
}
}
这是我的XML文件,我正在使用它来在视图寻呼机中使用图像
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androd="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/view_pager_image_view_show"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
时在imageview中显示的图像
答案 0 :(得分:0)
请参阅此输出。
xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/view_pager_image_view_show"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/canoe_water_nature_resized"
android:scaleType="fitCenter" />
</RelativeLayout>
输出
ScaleType-fitCenter
已编辑
当您的图像高度大于屏幕高度时,会发生这种情况。它根据x轴对齐图像。这样您就可以在左右空间。
当图像宽度大于屏幕宽度时,会发生这种情况。它根据y轴对齐图像。这样您就可以在顶部和底部留出空间。
解决方案
尝试将最大图像高度减小为等于屏幕高度。