Android 使用Glide在SliderCard的ImageView中加载图像会产生奇怪的结果
我用它来开发一个应用程序,我从网络上抓取图像,所以我用glide在imageview中加载图像,我试过这样做Android 使用Glide在SliderCard的ImageView中加载图像会产生奇怪的结果,android,android-imageview,android-library,android-glide,Android,Android Imageview,Android Library,Android Glide,我用它来开发一个应用程序,我从网络上抓取图像,所以我用glide在imageview中加载图像,我试过这样做 public class SliderAdapter extends RecyclerView.Adapter<SliderCard> { private final int count; private String[] mPlayerImageUrlArray; // Adding an array of Urls instead of int resIds priva
public class SliderAdapter extends RecyclerView.Adapter<SliderCard> {
private final int count;
private String[] mPlayerImageUrlArray; // Adding an array of Urls instead of int resIds
private final View.OnClickListener listener;
public SliderAdapter(String[] mPlayerImageUrlArray, int count, View.OnClickListener listener) {
this.mPlayerImageUrlArray = mPlayerImageUrlArray;
this.count = count;
this.listener = listener;
}
@Override
public SliderCard onCreateViewHolder(ViewGroup parent, int viewType) {
final View view = LayoutInflater
.from(parent.getContext())
.inflate(R.layout.layout_slider_card, parent, false);
if (listener != null) {
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listener.onClick(view);
}
});
}
return new SliderCard(view);
}
@Override
public void onBindViewHolder(SliderCard holder, int position) {
holder.setContent(mPlayerImageUrlArray[position]);
}
@Override
public void onViewRecycled(SliderCard holder) {
holder.clearContent();
}
@Override
public int getItemCount() {
return count;
}
}
但结果是
正如您所看到的,图像的高度和宽度并不像可绘制的那样完美,我在代码中做了一些更改,如您所见
问题是我如何才能让图像像可抽片一样完美地覆盖幻灯片卡
更新
您能发布布局滑块卡片吗?请稍等。@HamidReza代码已添加
public class SliderCard extends RecyclerView.ViewHolder {
private static int viewWidth = 0;
private static int viewHeight = 0;
private final ImageView imageView;
public SliderCard(View itemView) {
super(itemView);
imageView = (ImageView) itemView.findViewById(R.id.image);
}
void setContent(final String imgUrl) {
Log.e("IMG_URL", "setContent() is " + imgUrl);
if (viewWidth == 0) {
Log.e("IF", "Called ");
itemView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
itemView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
viewWidth = itemView.getWidth()*2;//Here I tried to double the image size but in vain
viewHeight = itemView.getHeight()*2;//Here I tried to double the image size but in vain
loadBitmap(imgUrl);
}
});
} else {
loadBitmap(imgUrl);
}
}
void clearContent() {
/* if (task != null) {
task.cancel(true);
}*/
}
private void loadBitmap(String imgUrl) {
//Glide comes in to place here
imageView.setMaxWidth(viewWidth);
imageView.setMaxHeight(viewHeight);
Glide.with(imageView.getContext())
.load(imgUrl)
.into(imageView);
}
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardCornerRadius="@dimen/card_corner_radius"
app:cardPreventCornerOverlap="false">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"/>
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:alpha="0"/>
</android.support.v7.widget.CardView>