1

画面4.3でアプリを実行すると正常に動作しますが、3.14画面で実行すると、大きなサイズで画像が上下に正しく表示されません。

さまざまな画面サイズに依存するパーセンテージを使用して画像を表示する方法はありますか?

ImageViewコードは次のとおりです。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mThumbIds[position]);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(200,200 ));
    return imageView;
}
4

4 に答える 4

3

私は私の答えの解決策を見つけましたそれは@dmonの答えに近いです

値フォルダーにdimensions.xmlを作成しました

<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="width">150dp</dimen>   
<dimen name="height">150dp</dimen>
</resources>

およびimageadapter.java

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mThumbIds[position]);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(
            (int) mContext.getResources().getDimension(R.dimen.width),                                                                                   
            (int) mContext.getResources().getDimension(R.dimen.height)));
    imageView.setPadding(5, 5, 5, 5);
    return imageView;
}

みなさん、よろしくお願いします

于 2012-09-09T18:37:14.027 に答える
1

//スクリーンインチの天気に関連する4フィートまたは3.2の注意があります

ldpi、mdpi、hdpi、xhdpiのいずれであっても、画面の解像度に問題があります。

final int scaleImage=200;

// Get the screen's density scale
final float scale = getResources().getDisplayMetrics().density;
// Convert the dps to pixels, based on density scale
final int imgSize  = (int) (scaleImage * scale + 0.5f);

// Use imgSize as a distance in pixels...
this 200 will give you a pixel as 


@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView = new ImageView(mContext);
        imageView.setImageResource(mThumbIds[position]);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setLayoutParams(new GridView.LayoutParams(imgSize,imgSize ));
        return imageView;
    }
  • ldpi-150px
  • mdpi-200px
  • hdpi-300px
  • xhdpi- 400px
于 2012-09-06T14:18:54.617 に答える
0

dimens.xmlファイルを作成します。

<resources>
  <dimen name="gridview">200dp</dimen>
</resources>

次に、そのリソースを取得します。

   int size = mContext.getResources().getDimensionPixelSize(R.dimen.gridview);
   imageView.setLayoutParams(new GridView.LayoutParams(size, size));

ドキュメントでDimensionリソースを確認できます。

于 2012-09-06T13:46:46.840 に答える
0

このコードを試して、画面のサイズを取得してください

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

metrics.heightPixels;
metrics.widthPixels;

またはこれ

getContext().getResources().getDisplayMetrics().widthPixels
getContext().getResources().getDisplayMetrics().heightPixels
于 2012-09-06T13:45:32.703 に答える