1

GridView各行に正確に 2 つの画像が表示され、画像が画面の幅 (パディングとマージンを除く) に収まるが、最大の幅と高さ (たとえば 1 インチ) があるというこれらの制約で、いくつかの画像のサムネイル (画像は正方形) を表示し
たい質問を読みましたが、問題を解決できません。手伝ってくれませんか。

GridView xml:

<GridView
    android:id="@+id/gridview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:horizontalSpacing="10dp"
    android:numColumns="2"
    android:scrollbarStyle="outsideOverlay"
    android:scrollbars="vertical"
    android:stretchMode="columnWidth"
    android:verticalScrollbarPosition="right"
    android:verticalSpacing="10dp"
    android:padding="10dp" />

GridView アイテム xml:

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/thumbnail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleType="fitXY"
    android:maxWidth="72pt"
    android:maxHeight="72pt"
    />

私が欲しいものを正確に示すために2枚の写真を追加しました

4 インチ モバイルのグリッド ビュー

7 インチ タブレットのグリッド ビュー

最初の画像 (4 インチの携帯電話) はまさに私が望むものですが、画像 2 のように画面の幅が大きくなるにつれて (タブレットまたは横向き)、画像項目を拡大したいと考えています。(最大幅サイズがあるため、このモードでの結果は画像 1 に描かれている携帯電話と同じではないことに注意してください)

4

4 に答える 4

1

必要な水平方向の間隔を自分で計算する必要があります。

結果はピクセル単位であり、おそらく実際のサイズ (インチや DP など) で処理する必要があるため、最初に制約をピクセルに変換する必要があります。たとえば、DP をピクセルに変換するには、次を使用します。

float px = someDpValue * context.getResources().getDisplayMetrics().density;

次に、このメソッドを使用して gridView のサイズを取得すると、計算を実行して、それに応じて gridView とそのアダプターを設定できます。

おそらく、各列の水平方向の間隔と高さを設定する必要があります。

グリッド内の imageViews に正方形以外の画像が指定される場合、それらは縦横比を維持するため、それにも対処する必要があることに注意してください。スケーリング タイプとして center-crop を使用するか、単に画像を引き伸ばすことができます。

于 2013-08-05T18:25:52.703 に答える
0

高さが常に幅と一致するイメージビューを作成するには、イメージビューを拡張する必要があります。次に、ストック イメージ ビューの代わりにこのビューを使用し、レイアウトの幅と高さを match_parent に設定します。maxWidth と maxHeight を削除します。

于 2013-08-05T17:41:19.553 に答える