如何设置GridView行高?

时间:2016-08-07 14:53:36

标签: android android-layout gridview

我有GridView,并设置列数和网格布局的总宽度。需要66dp x 66dp尺寸的商品。但不知何故,物品是平方的,但66x66更小。我忘记了什么?

int zz = .. // number of columns comes from outside
gridview.setNumColumns(zz);
LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams)gridview.getLayoutParams();
linearParams.width=66*zz;
gridview.setLayoutParams(linearParams);
<GridView
                android:id="@+id/gridView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_margin="0dp"
                android:columnWidth="66dp"
                android:gravity="center"
                android:horizontalSpacing="0dp"
                android:scrollbarAlwaysDrawHorizontalTrack="true"
                android:scrollbarAlwaysDrawVerticalTrack="true"
                android:scrollbars="horizontal"
                android:stretchMode="none"
                android:verticalSpacing="0dp">

            </GridView>

项目原型

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="66dp" android:layout_height="66dp">

    <ImageView
        android:id="@+id/icon"
        android:layout_width="66dp"
        android:layout_height="66dp"
        android:padding="0dp"
        android:background="@android:color/holo_orange_light"/>

</RelativeLayout>

shreen shot

enter image description here

3 个答案:

答案 0 :(得分:0)

你可以使用这个..

int width = 66*zz;

view.setLayoutParams(new GridView.LayoutParams(GridView.width, YOUR_HEIGHT));

答案 1 :(得分:0)

LinearLayout.LayoutParams需要像素值而不是dp

int gridItemWithInDp = 66;
int gridItemWithInPx = (int) (gridItemWithInDp * Resources.getSystem().getDisplayMetrics().density);

linearParams.width=gridItemWithInPx *zz;
gridview.setLayoutParams(linearParams);

答案 2 :(得分:0)

您应该在dp中设置gridview的宽度,从代码或声明为资源xml

来自代码:

final float density = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) ((66 * zz) * density + 0.5f);

或来自xml

int pixels = getResources().getDimensionPixelSize(R.dimen.example_dimen);

gridview.setNumColumns(zz);
LinearLayout.LayoutParams linearParams =       (LinearLayout.LayoutParams)gridview.getLayoutParams();
linearParams.width=pixels;
gridview.setLayoutParams(linearParams);

设置项目原型宽度和高度MATCH_PARENT

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <ImageView
        android:id="@+id/icon"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="0dp"
        android:background="@android:color/holo_orange_light"/>

</RelativeLayout>
相关问题