1

6 列 60 行のグリッド ビューを作成しました。画像を追加、移動、消去できる場所。しかし、列間の距離を設定するのに問題があります (列間にスペースを入れたくありません)。画面サイズによって変わるので。私は自分の電話用に設定してから、友人の電話で試してみましたが、列の間は 10 dp でした。GridView EDITのxmlは次のとおりです。小さな電話で試してみると、セルに合わせて画像を大きくすることができます。

<GridView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/image_grid_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:numColumns="@integer/num_columns"
            android:stretchMode="columnWidth" />

レイアウト用のJavaコードを次に示します

ImageCell v = null;
if (convertView == null) {
    v = new ImageCell (mContext);
    v.setLayoutParams(new GridView.LayoutParams(80, 80));
    v.setScaleType(ImageView.ScaleType.CENTER_CROP );

} else {
    v = (ImageCell) convertView;
}

その v.setLayoutParams... を変更してみました

v.setLayoutParams(new GridView.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT ));

v.setLayoutParams(new GridView.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

しかし、これらの 2 つにより、GridView は使用できなくなりました。誰かが私が間違っていることを知っている場合は教えてください。誰かが何か他のものを必要とする場合は、それを求めてください (スクリーンショットを投稿できません)。

4

4 に答える 4

6

同様の問題があり、getDisplayMetrics で別のアプローチを使用しました。

DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int screenWidth = metrics.widthPixels;

そして、列数の間で分割します。

v.setLayoutParams(new GridView.LayoutParams(screenWidth/2, screenWidth/2));
v.setPadding(8, 8, 8, 8);

それほどエレガントではありませんが、簡単です。:-)

于 2015-02-08T17:23:26.277 に答える
4

問題は、セルの幅と高さをハードコーディングしていることです。

これにより、すべての電話でセルの幅が 80 ピクセルになります。携帯電話の解像度が高い (実際のピクセルが小さくなる) 場合、ビューは小さくなります。ビュー全体を xml ではなく Java で本当に作成したい場合は、少なくともリソース ファイルからセルのディメンションをロードします。これにより、密度に依存しないピクセルで値を保存し、電話で実際の画面解像度に一致する値に調整することができます。

詳細については、ドキュメントの複数画面のサポートに関するセクションを参照してください。

于 2012-04-26T08:31:02.907 に答える
2

Janusz のコメントに加えて、Android が何も自動的にストレッチしないようstretchModeに設定する必要があるかもしれません。noneさらに、列間に間隔を空ける必要がない場合は、horizontalSpacing0 に設定します。最終的に次の XML になる可能性があります。

<GridView
        ...
        android:stretchMode="none"
        android:horizontalSpacing="0dp"
</GridView>
于 2012-04-26T08:35:11.533 に答える
0

http://developer.android.com/guide/practices/screens_support.htmlを参照してください 。

小さな携帯電話でグラフィックが大きすぎる場合は、 drawable-mdpi や sth などの追加の描画可能なディレクトリを使用してください。android:stretchMode="none"また、グリッドビュー(xml)で試してください。

于 2012-04-26T08:36:03.710 に答える