7

GridView 内のセルの高さに問題があります。私の各セルには、次のように内部に imageView があります。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent">

<GridView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:id="@+id/eventGridView" android:numColumns="2"/>
</LinearLayout>

各セルの ImageView は次のとおりです。

<com.example.scheduling_android.view.RoundedCornerImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:maxWidth="150dp"
        android:maxHeight="150dp"
        xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/eventImageView"
        android:adjustViewBounds="false"/>

imageView のさまざまな画像サイズをいじっていました。私が得たのは、画像が大きくなるたびに (たとえば、400 x 400px)、セルの高さが非常に高くなることです (幅の約 2 倍のサイズです。グリッドを 2 列を使用するように設定していることに注意してください)。ただし、画像を小さいサイズ (たとえば、160 x 160px) で保存すると、gridView は正しく表示されました。高さと幅が一致しています。

スクリーンショットは次のとおりです。

ここに画像の説明を入力

問題に見えるのは?大きな画像が原因で gridView がセルの高さを正しく計算していない可能性がありますか? これを修正するにはどうすればよいですか?

4

4 に答える 4

2

ここでは、各行にユーザー 3 列があり、正常に動作します。ギャラリー ビューは、実行時に列幅を設定します。

mPhotoGalleryGridView.setColumnWidth(display.getWidth() / 3);

レイアウト中

<GridView android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/photogallerygridview"      
    android:padding="5dp"
    android:verticalSpacing="5dp"
    android:horizontalSpacing="5dp"
    android:stretchMode="columnWidth"
    android:numColumns="3"
    android:gravity="center">    
</GridView>

アダプター内: イメージビューの高さと幅を設定します。

imageview.setMaxHeight(150);
        imageview.setMinimumHeight(150);

あなたに役立つことを願っています。

于 2012-09-11T05:23:08.230 に答える
0

wrap_contentの代わりに使用してくださいfill_parent

fill_parent は実際には元の画像の高さを取得し、画面を埋めようとするためです。400x400 の画像を使用して と を設定 layout_width = "160dp"してもlayout_height = "160dp"、それ以上の画像を表示できないため機能します。

于 2012-09-11T05:15:44.987 に答える
0

以下のコードを試してください。幅はディップである必要があります

 android:adjustViewBounds="true"
 android:maxWidth="150dip"
 android:maxHeight="150dip"
于 2012-09-11T06:10:25.433 に答える