0

我很感激,如果有人可以建议在下面。调整GridView与ImageViews到不同的屏幕尺寸,Android

GridView有3列,将被填充ImageViews:

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/grid_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:layout_marginRight="10dp" 
     android:layout_marginLeft="10dp" 
     android:numColumns="3" 
     android:columnWidth="0.3dp" 
     android:horizontalSpacing="20dp" 
     android:verticalSpacing="20dp" 
     android:stretchMode="columnWidth"> 
    </GridView> 

,增加了ImageViews到网格单元的适配器:

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

    ImageView imageView = new ImageView(mContext); 
    imageView.setImageResource(mThumbIds.get(position)); 
    imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); 
    imageView.setLayoutParams(new GridView.LayoutParams(300, 300));//problem here 

    return imageView; 
} 

我的图片的所有尺寸358x385px的。

它可以在更大的屏幕不错,但未能在较小的(例如4" ,800×480)。 我不知道如何设置LayoutParams要像屏幕宽度的1/3和高度形成广场。

我不希望有合适的尺寸不同的屏幕密度增加更多的图片,而不是我想调整ImageViews只。

+0

尝试设置保证金的价值左 - 右和horizo​​ntalSpacing,verticalSpacing通过值不硬编码PLUS更改图像视图属性imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);到FIT_XY。 – Radhey

+0

@Radhey,ImageView的大小应该形成一个正方形? –

+0

这取决于你的应用程序屏幕,你必须为你的图像视图的宽度和高度计算比例并将其设置到不同的值文件夹,然后访问它们的值不直接把它(300,300),用于计算参考不同文件夹的ic_launcher图标。 – Radhey

回答

0

遵循squre GridView的验证码到所有设备compitible。

步骤:1创建一个类SquareImageV扩展Imageview的iew.class。

public class SquareImageView extends ImageView { 

public SquareImageView(Context context) { 
    super(context); 
} 

public SquareImageView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public SquareImageView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
} 

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth()); //Snap to width 
} 
} 

第2步:更改适配器这样。

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

SquareImageView imageView = new SquareImageView (mContext); 
imageView.setImageResource(mThumbIds.get(position)); 
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); 

return imageView; 
} 

和你这样的XML

<GridView 
    android:id="@+id/grid_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:numColumns="3" 
    android:gravity="center" 
    android:padding="3dp" 
    android:stretchMode="columnWidth" 
    android:horizontalSpacing="2dp" 
    android:verticalSpacing="2dp" 
    /> 

而且在小屏幕测试device..It将帮助您