web-dev-qa-db-ja.com

android)のグリッドビューの行間のスペースを削除する方法

Androidグリッドビューでは、グリッドビューの行の間に余分なスペースがあります。グリッドビューにスペースを追加していません。

これが私のxmlファイルです

        <GridView
                xmlns:Android="http://schemas.Android.com/apk/res/Android"
                Android:id="@+id/grid"
                Android:layout_width="fill_parent" 
                Android:layout_height="fill_parent"
                Android:horizontalSpacing="5px"
                Android:numColumns="3"
                Android:columnWidth="50dip"
                 Android:verticalSpacing="0dip"
                Android:gravity="center"
                />

グリッドビューにビューを追加しているimageviewの他のxmlは

        <ImageView
            xmlns:Android="http://schemas.Android.com/apk/res/Android"
            Android:id="@+id/singlePhoto"
            Android:layout_gravity="top"
            Android:layout_width="145dip"
            Android:layout_height="145dip"
            Android:layout_marginTop="0dip"
            Android:layout_marginBottom="0dip"
            >
        </ImageView>

Adapterクラスでは、コードは次のとおりです。

        if(mView == null){
            mView = mLayoutInflater.inflate(R.layout.newsgridthumbpic, null);
                }

                ImageView mImage = (ImageView)mView.findViewById(R.id.singlePhoto);
                PhotoGridInfoSet mInfo = (PhotoGridInfoSet)details.get(position);
                if(mImage != null){
                mImage.setTag(mInfo.getPhotoThumbNailString());
                mImage.setVerticalScrollBarEnabled(true);
                mImage.setVerticalFadingEdgeEnabled(true);
                }
        }!

スペースはグリッドビューの行の間にあります。コードのどこにもスペースを追加していませんが、垂直方向のスペースがあります。グリッドビューの行の間にスペースがある理由がわかりません。このスペースは、hdpiデバイス/エミュレーターには表示されません。この問題は、mdpiおよびldpiデバイス/エミュレーターにあります。

Image for reference. this is what happening right now.

18
Dipali

私はこの問題の解決策を得ました。

これを解決するには、xmlファイルに1行追加する必要があります

Android:adjustViewBounds="true"

そしてこれを追加した後。スペースは現在表示されていません

39
Dipali

最後の2行をgridViewに入れるだけです

<GridView
        Android:numColumns="2"
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        Android:id="@+id/gridView"
        Android:horizontalSpacing="0dip"
        Android:verticalSpacing="0dip"/>
2
Deepak Sood

ただあなたの 「newsgridthumbpic」 レイアウトには、グリッドビュー要素よりも高い高さの余分なパディングや背景画像は含まれていません。

また、供給していることを再確認してください 列幅 なので 50dip しかし、あなたの 「imageview's」 幅は 145ディップ

0
akkilis

これを見てくださいそれは便利です-

http://developer.Android.com/guide/topics/ui/layout/gridview.html

(SOは、編集を送信するために、さらにいくつかの文字を追加するように要求しました)

0
NagarjunaReddy

グリッドビューでAndroid:verticalSpacingを負の値に設定します。垂直方向のスペースが削除されます。

(例:Android:verticalSpacing = "-10dp")

正しい値を取得するためにいくつかの数値でテストする

0
user5077219
<GridView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/grid"
    Android:layout_width="fill_parent" 
    Android:layout_height="fill_parent"
    Android:horizontalSpacing="5px"
    Android:numColumns="3"
    Android:columnWidth="50dip"
     Android:verticalSpacing="0dip"
    Android:gravity="center"/>

<ImageView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/singlePhoto"
    Android:layout_width="145dip"
    Android:layout_height="145dip"
    Android:scaleType="fitXY">
</ImageView>
0
Hardip

次の行をurgetView()メソッドに入れます。

mImage.setPadding(0, 0, 0, 0);

これがお役に立てば幸いです。

0
himanshu

アスペクト比を維持しながら、50dpの列幅に合うように画像が拡大縮小されているようです。これは、垂直レイアウトに埋められていないスペースの束を導入しています。列の幅を50dpにする場合、これらの間隔の問題を解決する最も簡単な方法は、imageviewの幅を50dpに調整し、それに比例してimageviewの高さを調整することです。

0
Nick Campion