【发布时间】:2018-07-20 16:24:04
【问题描述】:
我在 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>
【问题讨论】:
-
您希望您的图像视图作为您添加的最后一张图像。您可以使用 fitXY,但它会拉伸您的图像。
-
@MohamedMohaideenAH fitXY 不适合图像 centerInside()
-
我想在 imageView 中显示图像中心,但它在 imageView 的左侧和右侧显示空白:(
-
fit_center 也不起作用
-
我正在使用 fit_center 但它在 imageView 的左侧和右侧显示空白:(
标签: android android-layout android-viewpager imageview