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將幫助您