将Gridview与另一个视图对齐

时间:2016-08-09 06:28:11

标签: android gridview

我有ImageView。在它下面,我希望有一个GridView包含许多较小的图像。我希望它看起来整洁......每行4个,顶部和底部间距均匀。

目前,间距并不算太差(即使我的眼睛看左右间距看起来比上下间距要薄一些)但我真正挣扎的是最右边的额外保证金。

我希望网格视图中图像的右边缘与大图像的右边缘完美对齐。我做错了什么?

以下是我目前所拥有的图片:

enter image description here

这是我的布局:

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">



            <ImageView
                android:id="@+id/items_image"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/placeholder"
                android:scaleType="fitStart"
                android:adjustViewBounds="true"
                style="@style/ItemsImage" />

            <GridView
                android:id="@+id/items_all_images"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:numColumns="4"
                android:stretchMode="columnWidth"
                android:clipToPadding="false"
                android:scrollbarStyle="outsideOverlay"


                android:verticalSpacing="20dp"


                style="@style/ItemsImage"
                />

        </LinearLayout>

    </LinearLayout>

ItemsImage样式是这样的:

<style name="ItemsImage">
    <item name="android:gravity">top|left</item>
    <item name="android:layout_gravity">top|left</item>
    <item name="android:paddingRight">25dp</item>
</style>

2 个答案:

答案 0 :(得分:0)

我不知道这是最好的方法,但它可以解决问题。 将这些行添加到您的活动的onCreate方法:

YOUR_GRIDVIEW.post(new Runnable()
{
    @Override
    public void run(){
    YOUR_GRIDVIEW.setWidth(YOUR_IMAGE.getWidth());
    }
});

答案 1 :(得分:0)

定义网格的固定宽度和高度,以及gridView中的图像。在网格实例初始化后的代码中,您可以设置间距如下。

GridView gridView;
int gridWidth = 1280;
int gridHeight = 500;
int gridItemWidth = 60;
int gridItemHeight = 50;
int gridRows = 3, gridColumns = 4;
int vSpacing = (gridHeight - (gridItemHeight * gridRows))/gridRows;
int hSpacing = (gridWidth - (gridItemWidth * gridColumns))/gridColumns;
gridView.setLayoutParams(new LayoutParams(gridWidth, gridHeight));  

gridView.setColumnWidth(gridItemWidth);
gridView.setNumColumns(gridColumns);

gridView.setHorizontalSpacing(hSpacing);
gridView.setVerticalSpacing(vSpacing);

将网格宽度设置为等于GridView上方的大图像的大小。 希望它可以帮到你。