web-dev-qa-db-ja.com

GridLayout(GridViewではない)-セル間のスペース

アプリケーションでGridLayoutsを表示するためにImageView(support)を使用しています。 3列と5行があります。問題は、GridLayout内のセルが自動的にそれらの間にいくらかのスペースを取得することです。セルにパディングやマージンを設定していません。下の画像を参照してください。すべてのセルは動的に追加されます。これらのセルを追加する方法は次のとおりです。

画面の幅と高さの取得:

Point size = new Point();
getWindowManager().getDefaultDisplay().getSize(size);
screenWidth = size.x;
screenHeight = size.y;
rowHeight = (int) (screenHeight * 0.2);

GridLayoutへのビューの追加:

    GridLayout.LayoutParams params = new GridLayout.LayoutParams(
            getSpec(rowColumn[0]), getSpec(rowColumn[1]));

    params.height = rowHeight;

    if (rowColumn[1].equalsIgnoreCase("col_full")) {
        params.width = (int) (screenWidth);
    } else if (rowColumn[1].equalsIgnoreCase("col_two_part")) {
        params.width = (int) (screenWidth * 0.6);
    } else {
        params.width = (int) (screenWidth * 0.3);
    }

    ImageButton image = (ImageButton) imageHashMap
            .get(reOrderedButtonsListCopy.get(i));
    image.setLayoutParams(params);

    gridLayout.addView(image, params);

XMLレイアウト:

<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res/com.xx.xxx"
    Android:id="@+id/scrollView1"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content" >

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="vertical" >

        <Android.support.v7.widget.GridLayout
            xmlns:app="http://schemas.Android.com/apk/res/com.xx.xxx"
            Android:id="@+id/gridlayout_main"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_margin="2dp"
            app:columnCount="3"
            app:rowCount="5" >
        </Android.support.v7.widget.GridLayout>

    </LinearLayout>

</ScrollView>

現在の結果:

enter image description here

赤い線はセル間のスペースを示しています。また、GridLayoutの左側にスペースがあります。 2dplayout_marginとして指定しただけです。このパディングが発生する理由は何ですか?

[編集]

次の変更を行うと、間隔が削除されました。

gridLayout = (GridLayout) findViewById(R.id.gridlayout_main);
gridLayout.setUseDefaultMargins(false);
gridLayout.setAlignmentMode(GridLayout.ALIGN_BOUNDS);
gridLayout.setRowOrderPreserved(false);

下の画像を参照してください。

enter image description here

11
Vamsi Challa

解決策を見つけました。

次の変更を行うと、間隔が削除されました。

gridLayout = (GridLayout) findViewById(R.id.gridlayout_main);
gridLayout.setUseDefaultMargins(false);
gridLayout.setAlignmentMode(GridLayout.ALIGN_BOUNDS);
gridLayout.setRowOrderPreserved(false);

下の画像を参照してください。

enter image description here

13
Vamsi Challa