2013-05-21 265 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