2013-03-16 135 views
1

我有一個GridView,我用它來顯示一行4個圖像,每個圖像是200 x 200像素。這裏是佈局的xml:GridView拉伸ImageView非均勻

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <GridView 
     android:id="@+id/myGridView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:numColumns="4" > 
    </GridView> 

</RelativeLayout> 

當我跑這裏來了我的應用程序的圖片是什麼樣子:

grid view with 4 images

正如你所看到的圖像越來越縮小(縮小),以適應屏幕。

我該如何使圖像在垂直和水平方向拉伸以保持正確的高寬比?

請注意,我使用的是適配器圖像:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { 
     imageView = new ImageView(context); 
    } else { 
     imageView = (ImageView) convertView; 
    } 
    imageView.setBackgroundResource(imageIds[position]); 
    return imageView; 
} 
+1

你試圖起訴imageView.setImageResource而不是setBackgroundResource? – sandrstar 2013-03-16 03:52:42

回答

3

我得到了同樣的問題,在過去的weak.Use我的圖像視圖類和解決這個問題。

public class iv_autoSizedImageView extends ImageView { 

    public iv_autoSizedImageView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 

     // TODO Auto-generated method stub 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
     try { 

      getLayoutParams().height = getMeasuredWidth(); 

     } catch (Exception e) { 
      // TODO: handle exception 

     } 

    } 

} 

layout.xml

<com.sample.test.iv_autoSizedImageView 
      android:id="@+id/IV_NEWS_IMAGE" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"/>