【问题标题】:Picasso is placing images on top of each other毕加索将图像放在彼此之上
【发布时间】:2018-06-08 23:22:50
【问题描述】:

我刚开始在 Android 上使用 Picasso。所以我不完全理解它。我有一个工作正常的图像片段,我可以看到我的文本和图像(大部分)。没有错误。我的问题是我有一组要输出的图像。但问题是它把一张图片放在 position x,y 然后把下一张图片放在同一个地方。它不是将它们放在Gridview 格式中。请问有人知道为什么吗?

我的片段 XML

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myPhotos"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="00dp"
android:numColumns="auto_fit"
android:verticalSpacing="20dp"
android:horizontalSpacing="30dp"
android:stretchMode="columnWidth"
android:paddingTop="25px"
android:gravity="center"
/>

MyFragment 代码

public class ImagesFragment extends Fragment {
private View view;
private ImageAdapter imageAdapter;
private  GridView gridView;
public ImagesFragment() {

}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.images_fragment,container,false);
    GridView gridView = view.findViewById(R.id.myPhotos);
    imageAdapter = new ImageAdapter(getActivity(),3);
    gridView.setAdapter(imageAdapter);
    return view;
}
}

图像适配器

public class ImageAdapter extends BaseAdapter {
//The content of our screen
private Context context;
private ImageView imageView;
private int start;
private Integer[]imagesArray;
//ImageInfo images;
public ImageAdapter(Context context, int start)
{
    this.context = context;
    this.start = start;
    imagesArray = new Integer[4];
    imagesArray[0] =  0x55555;
    imagesArray[1] =  0x545555;
    imagesArray[2] =  0x454454;
    imagesArray[2] =  0x121210;
}
public int getCount()
{
    return imagesArray.length;
}

public Integer getItem(int position)
{
    return imagesArray[0];
}

public long getItemId(int position)
{
    return 0;
}

public View getView(int position, View convertView, ViewGroup parent)
{
    if (convertView == null)
        //Don't put in the constructor
        imageView = new ImageView(context);
    else
        imageView = (ImageView) convertView;
        if(start ==0)
            //Works fine loads all the images at array index 0
            Picasso.get().load(imagesArray[0]).resize(400,600).into(imageView);
        else
            //WHERE THE PROBLEM IS.. I think. 
            for(int i=1;i<=start; i++)
                Picasso.get().load(imagesArray[i]).resize(400,600).into(imageView);



    return imageView;
}
}

【问题讨论】:

  • 您的问题不是毕加索。尝试使用适当的间距、对齐方式、重力和填充来编辑您的 XML。
  • 删除这些行 if(start ==0) //正常加载数组索引0处的所有图像 Picasso.get().load(imagesArray[0]).resize(400,600).into (图像视图);否则//问题出在哪里……我想。 for(int i=1;i

标签: android xml fragment picasso


【解决方案1】:

这里的问题是,您正在为 GridView 使用 convertview。Convert 视图实际上是 FrameLayout。 将您的 GridView 转换为框架布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="match_parent"
             android:layout_height="match_parent">
    <GridView xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/my_images"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:numColumns="2">
    </GridView>

</FrameLayout>

然后在毕加索中使用convertview

Picasso
            .with(context)
            .load(imageUrls[position])
            .fit() // will explain later
            .into((ImageView) convertView);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2019-01-07
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多