Android gridview根据动态编号布局其子视图

Android gridview根据动态编号布局其子视图,android,android-gridview,Android,Android Gridview,使用以下代码创建GridView。问题是,如果GridView有4个子元素,那么它在第一行显示前三个,在第二行显示第四个元素。我想要第四个元素来填充第二行的整个宽度 如果GridView有5个子项,则最后两个子项填充第二行的整个宽度。 有什么建议吗 <GridView android:id="@+id/gridView1" android:numColumns="auto_fit" android:gravity="center" android:colu

使用以下代码创建GridView。问题是,如果GridView有4个子元素,那么它在第一行显示前三个,在第二行显示第四个元素。我想要第四个元素来填充第二行的整个宽度

如果GridView有5个子项,则最后两个子项填充第二行的整个宽度。 有什么建议吗

<GridView 
    android:id="@+id/gridView1"
    android:numColumns="auto_fit"
    android:gravity="center"
    android:columnWidth="100dp"
    android:stretchMode="columnWidth"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    > 
</GridView>

子视图布局

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

<ImageView
    android:id="@+id/grid_item_image"
    android:layout_width="50px"
    android:layout_height="50px"
    android:layout_marginRight="10px"
    android:src="@drawable/android_logo" >
</ImageView>

<TextView
    android:id="@+id/grid_item_label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@+id/label"
    android:layout_marginTop="5px"
    android:textSize="15px" >
</TextView>


当你对gridView说你想要一个columnWidth=“100dp”时,它会将你的设备屏幕宽度大小除以100dp。。。然后您声明了numColumns=“auto_-fit”,这样它将根据屏幕大小填充它们。。。 屏幕大小=440dp。。。440/100 = 4 ... 4行可以在一行中。。。然后在gridview中有5个元素。。。所以它会把前四个放在第一行,第五个放在第二行。。。因此,也许在你的情况下,最好的解决办法是铁杆说

 android:numColumns="2/3/4" (how many you want to, this number can be decided from screen width)

您在每个元素中都尝试过android:layout\u weight=“1”吗?好的。但如果android:numColumns=“3”且元素为4,则我希望4元素填充其行的宽度,这并不是您所能做到的。。。唯一的事情是检查您只有四个元素要显示(您传递给适配器的数组),然后调用grid.setNumColumns(2)…如果是grid.setNumColumns(3),那么我希望第四个元素填充第二行的宽度。