在GridView中对齐和缩放图像

问题描述:

我有一个GridView,我将ImageView添加到并随机放置drawable作为生成网格的资源,如下图所示。在GridView中对齐和缩放图像

我想缩放图像,以便他们之间的唯一差距将是填充,我也想要匹配它之间的间距,列之间的行,使gridView将永远是一个正方形适合屏幕的宽度(加上边距)。图像之间的最小差距将是我设置的填充,所以如果屏幕大或小,图像将按比例放大或缩小以适应网格视图的宽度。

那么我该怎么做呢?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#FFFFFF" > 

<GridView 
    android:id="@+id/grid" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_centerInParent="true" 
    android:layout_marginTop="50dp" 
    android:columnWidth= "50dp" 
    android:stretchMode="spacingWidthUniform" 
    android:gravity="center" 
    android:clickable="true"> 

</GridView> 

public View getView(int position, View convertView, ViewGroup parent) { 

      if (convertView == null) { 
      randomPosition = rng.nextInt(gridSize); 
      imageView = new ImageView(mContext); 
      imageView.setPadding(2, 2, 2, 2); 
      } 
      else { 
       imageView = (ImageView) convertView; 
      } 

      imgSet(); 
      return imageView; 
    } 

    public void imgSet(){ 
     if (diff == 1){ 
      imageView.setImageResource(mThumbIds[randomPosition]); 
     } 
     if (diff == 2){ 
      imageView.setImageResource(mThumbIds2[randomPosition]); 
     } 
     if (diff == 3){ 
      imageView.setImageResource(mThumbIds3[randomPosition]); 
     } 
    } 

My GridView filled with imageViews displaying circle drawables

如果图像缩放是你的问题,你可以尝试缩放imagees以适合ImageView的,并把它们对电网..

尝试机器人: scaleType =“fitXY”

尝试scaleType中的其他选项也作为pe你的需求

+0

会有一种方法来匹配网格的高度与宽度? – MDubzem 2014-10-19 01:51:11

+0

我还需要在创建图像视图的代码中设置缩放类型,而不是在xml中,所以我不确定如何设置缩放类型,我看到我想要的类型是合适的中心 – MDubzem 2014-10-19 02:06:33

+0

@MDubzem如果你需要通过代码设置它使用yourimageview.setScaleType(ScaleType.FIT_XY); [这里是开发链接] http://developer.android.com/reference/android/widget/ImageView.ScaleType.html) – 2014-10-20 07:25:10