Android GridView行高度行为不正确

Android GridView行高度行为不正确,android,gridview,Android,Gridview,我使用的GridView显示了一个带有背景图像和文本的线性布局,如以下示例所示: 就像那个例子一样,我用那个代码使图像有圆角 问题是,如果我不使用圆角,我所有的网格项都是相同的高度,不管它们里面有什么文本,即使我所有的图像都是相同的大小 但是如果我使用它,项目的高度将被包装到内容中 我试图定义我的线性布局,以包装内容、填充父对象、匹配父对象,甚至固定高度,但系统忽略了我 这是我的网格布局: <LinearLayout xmlns:android="http://schemas.andro

我使用的GridView显示了一个带有背景图像和文本的线性布局,如以下示例所示:

就像那个例子一样,我用那个代码使图像有圆角

问题是,如果我不使用圆角,我所有的网格项都是相同的高度,不管它们里面有什么文本,即使我所有的图像都是相同的大小

但是如果我使用它,项目的高度将被包装到内容中

我试图定义我的线性布局,以包装内容、填充父对象、匹配父对象,甚至固定高度,但系统忽略了我

这是我的网格布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFDDDDDD"
    android:orientation="vertical"
    tools:context=".RouteListActivity" >

    <GridView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/gridview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_margin="20dp"
        android:layout_weight="2"
        android:animateLayoutChanges="false"
        android:clipChildren="false"
        android:clipToPadding="false"
        android:drawSelectorOnTop="true"
        android:gravity="center"
        android:horizontalSpacing="10dp"
        android:numColumns="2"
        android:scrollingCache="false"
        android:stretchMode="columnWidth"
        android:verticalSpacing="10dp" />

</LinearLayout>
坦白地说,我不理解gridviews的行为。以前,我将不同大小的图像设置为背景图像,所有元素彼此重叠。即使在固定网格项布局的高度时,我也无法生成相同大小的行


我能在这里找到一些方向吗?

我终于解决了它,结果发现问题出在我正在使用的

vi = inflater.inflate(R.layout.grid_item, null);
而不是

vi = inflater.inflate(R.layout.grid_item, parent, false);
所以布局参数被忽略了


无论如何,让GridView均匀地分配空间是一件麻烦事。我想我将切换到TableView。

您可以使用setLayoutParams设置布局高度:

vi.setLayoutParams(new GridView.LayoutParams(<width_in_pixels>, <height_in_pixels>));
vi.setLayoutParams(新的GridView.LayoutParams(,);

您需要以像素为单位传递宽度和高度。所以,你可能想把150dp转换成像素。

Ohhh-MG..你帮我节省了3小时33分42秒。。谢谢:D
vi = inflater.inflate(R.layout.grid_item, parent, false);
vi.setLayoutParams(new GridView.LayoutParams(<width_in_pixels>, <height_in_pixels>));