12

このことは、しばらく頭を悩ませてきましたが、解決できないようです。

いくつかのビットマップを表示するグリッド ビューがあります。アダプター (iv.setPadding(5, 5, 5, 5);) を介して画像ビューを埋めるときに、すべての画像の側面に 5 dp のパディングを追加しますが、どういうわけか、それぞれの上部と下部に追加されるスペースが増えます私のグリッドビューのアイテム。

これはすでにここで尋ねられており、そのうちのいくつかは回答を受け入れていることも知っていますが、上記のURLで説明されているように回答を訴えようとすると、上下に同じ余分なスペースが表示され続けます.

現在、これを行う他の方法はありますか?

これが私のコードの一部です:

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/imageGrid"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:numColumns="6"
    />

grid_item.xml

<?xml version="1.0" encoding="utf-8"?>
<ImageView 
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/grid_item_image"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content" />

main.xml の listselector 属性に以下を追加しようとしました

  • @ヌル
  • @drawable/solid_white
  • @android:id/空

上部と下部に余分なスペースがあると、次のようになります (側面のスペースは、上記のように追加したものです)。

ここに画像の説明を入力

私のグリッドビューが同じ間隔になるように、それらの血まみれのスペースを削除する方法に関する他のアイデアはありますか?

前もって感謝します、

4

4 に答える 4

24

私にとってimageview.setAdjustViewBounds(true);は、Adapterクラスで設定することで問題を解決しました。

私の正方形の画像は自動的に幅のサイズが変更されたようですが、Gridviewはまだ元の高さを使用していました。境界を調整することにより、両方の寸法が自動的にサイズ変更され、デフォルトのストレッチモードが有効になっていてもすべてのアイテムがスムーズに表示されました。

于 2011-11-21T11:40:07.433 に答える
9

別の方法で設定されていない場合、GridView は、さまざまな方法で物事を拡張することによって、生成する必要があると想像しているレイアウトをオーバーライドします。列の幅とグリッド項目のサイズを定義してレイアウトを完全に制御したい場合は、GridView のstretchModeプロパティを"none"に設定する必要があります。

<GridView
        ...
        android:stretchMode="none">
</GridView>

また、GridView の幅で親を埋めています。余分な詰め物を追加したくない場合を除き、幅のコンテンツをラップする必要があると思います。5 dp パディングをどこに追加していますか? 各ビットマップ周辺またはグリッドビューの端周辺? 見えません。

ただし、おそらく高さを埋める必要があります。(次の幅と高さの一部は、おそらく「wrap_content」に置き換えることができます)

だから、あなたのために

<?xml version="1.0" encoding="utf-8"?>
<GridView
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/imageGrid"
    android:stretchMode="none"        
    android:layout_width="XXXdp"
    android:layout_height="fill_content"
    android:numColumns="6"
    />

また、列の間隔と幅が必要かどうか (または、wrap_content の代わりに dp) が必要かどうかもわかりません - GridView ではこれらは必要ないかもしれません - よくわかりません:

    android:columnWidth="YYYdp"
    android:horizontalSpacing="0dp"

5 dp のパディングを使用した ImageView:

<?xml version="1.0" encoding="utf-8"?>
<ImageView 
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/grid_item_image"
   android:padding="5dp"
   android:layout_width="UUUdp"
   android:layout_height="VVVdp" />
于 2011-11-13T00:13:50.173 に答える
1

これを簡単に歩ける方法を見つけました。に追加するだけandroid:layout_marginRightですGridView

于 2012-09-13T07:30:06.533 に答える