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

, 나는 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와 비슷합니다.

편집 작은 이미지와 동일한 코드 :

enter image description here

+0

제거 배경 이미지와 안드로이드로 설정하십시오 XML – Senthil

+0

에서 SRC 당신이 안드로이드에 설정에게의 GridView 열 높이를 시도 : layout_height = "wrap_content"? – nedaRM

+0

@vsk 나는 그것을 할 수 없다. 백그라운드는 전체보기의 배경입니다. 그런 다음 dinamically sdcard의 jpg 파일에서 SRC에 이미지를 추가합니다. 그래서 저는 bg와 src 둘 다 가지고 있어야합니다. Btw,이 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)); 

도 (바람직하게는 XML로) 사진을 추가하기 전에 scaleType을 설정 : 이미지 뷰에 대한

<?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 (EDIT) nvm, 나는 3으로 maxColumns를 설정하고 공간이 작습니다. 나는 약간의 조정을해야 할 것이다. 그게 다야. 고마워. <3 – Reinherd

관련 문제