2013-05-21 114 views
1

我截取了它的截图。它显示一些奇怪的方式: enter image description hereGridView没有正确显示

这是代码。

的GridAdapter:

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> 

在另一方面,我有一个GridView在一个XML文件:

<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。

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

enter image description here

+0

的删除背景图像,并设定为机器人:从XML – Senthil

+0

SRC你尝试过设置在GridView柱高度机器人:layout_height = “WRAP_CONTENT”? – nedaRM

+0

@vsk我不能那样做。背景是整个视图的背景,然后dinamically我在sdcard中的JPG文件添加SRC图像。所以我必须同时拥有:bg和src。顺便说一下,这个bg是162x162。白色。带有边框。 – Reinherd

回答

2

我会尝试设置图像查看尺寸为wrap_content:

android:layout_height="wrap_content" 

,如果你真的需要120dp身高,请在设置图像src后尝试重置此尺寸:

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

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

还设置scaleType添加图片(最好是在XML)之前:

为ImageView的
<?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> 
+0

应用您的每个提示,最后以正确的方式显示它,但每张图片之间的空间太大。检查这张图片:http://i.imgur.com/KdLiUOg.png(编辑)nvm,我已经设置maxColumns为3,空间较小。我将不得不做一些调整。就这样。谢谢你。<3 – Reinherd