1

我截取了它的截图。它显示了一些奇怪的方式: 在此处输入图像描述

这是代码。

网格适配器:

public class GridViewAdapter extends BaseAdapter {

private Context mContext;
private ArrayList<Uri> mUrls;  
// references to our images

public GridViewAdapter(Context c, ArrayList<Uri> images) {
    mContext = c;
    this.mUrls = images;
}

public int getCount() {
    return mUrls.size();
}

public Object getItem(int position) {
    return position;
}

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

public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater mInflater = (LayoutInflater) mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    ImageView inflatedImageView = (ImageView) mInflater.inflate(R.layout.imageview_amb_background, null);

    //ImageView imageView = new ImageView(mContext);

    inflatedImageView.setImageURI(mUrls.get(position));

    inflatedImageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

    return inflatedImageView;
}

inflatedImageView是一个布局膨胀,像这样:

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="120dp"
    android:layout_height="120dp"
    android:background="@drawable/bgimages" 
    android:maxWidth="120dp"
    android:padding="5dp">

</ImageView>

另一方面,我在 xml 文件中有一个 gridView:

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="250dp"
android:horizontalSpacing="5dp"
android:numColumns="3"
android:verticalSpacing="5dp" >
</GridView>

所以,我膨胀了这个 gridView,我在一个循环中添加了几个 URI(正好 3 个)。添加后,我将适配器设置为 gridview:

ArrayList<Uri> uriFotos = new ArrayList<Uri>();
HashMap<Integer, ListItem> items = xmlList.getItems();
for (int i = 0; i<items.size();i++){
     ListItem itemActual = items.get(i);
     itemActual.getLogoSrc();
     uriFotos.add(Uri.parse(Environment.getExternalStorageDirectory().toString()+rutaFinsCarpetaClient+itemActual.getLogoSrc()));
 }
 gridViewInflated.setAdapter(new GridViewAdapter(this,uriFotos));
variableContent.addView(gridViewInflated);

图像已正确“链接”。

variableContent是 ScrollView 内的 LinearLayout,因此网格应该是可滚动的。但正如您所看到的,发生了一些事情:

  • 身高太大了 不应该像上面inflatedImageView所说的那样吗?
  • 滚动不起作用。嗯,它工作,但我必须移动手指并点击几次,直到它工作。如果我停止滚动,我必须重复相同的过程,直到它再次做出反应。(解决了)

希望你们能帮助我。我改变了很多布局,改变了宽度、高度,同样的事情正在发生。

请注意,您在 gridView 中看到的图像类似于 1200x800px。

使用较小的图像编辑相同的代码:

在此处输入图像描述

4

1 回答 1

2

我会尝试将图像视图大小设置为 wrap_content :

android:layout_height="wrap_content"

如果您确实需要 120dp 的高度,请在设置图像 src 后尝试重置此大小:

 inflatedImageView.setImageURI(mUrls.get(position));

 inflatedImageView.setLayoutParams(new GridView.LayoutParams(120, 120));

还要在添加图片之前设置scaleType(最好在xml中):

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="120dp"
    android:layout_height="120dp"
    android:scaleType="centerInside"
    android:background="@drawable/bgimages" 
    android:maxWidth="120dp"
    android:padding="5dp">

</ImageView>
于 2013-05-21T08:21:44.560 回答