如何始终使用任何设备屏幕类型显示网格2列

时间:2013-01-09 08:47:22

标签: android android-layout

我有一个gridview,但它总是排成两列,我希望它总是排成两列。

这是网格布局:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/newsScroller"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F5F5F5" >

   <GridView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/newsScrollerContent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:horizontalSpacing="10dp"
        android:numColumns="auto_fit"
        android:verticalSpacing="10dp" >
    </GridView>

</ScrollView>

这是网格中的项目。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingBottom="5dip"
    android:layout_gravity="center" >

    <ImageView
        android:id="@+id/grid_item_image"
        android:layout_width="130dip"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:src="@drawable/icon" >
    </ImageView>

    <TextView
        android:id="@+id/grid_item_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/grid_item_image"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="2dp"
        android:gravity="center"
        android:shadowColor="#ffffff"
        android:shadowDx="1"
        android:shadowDy="2"
        android:shadowRadius="2"
        android:textColor="#333333"
        android:textStyle="bold"
        android:textSize="14sp" >
    </TextView>

</RelativeLayout>

我的问题,当我使用设备nexus运行完美,但如果我使用较小的屏幕设备将只显示一个coloumn,如下所示:

enter image description here

如果我使用平板电脑,那么将是五个coloumn。 我的问题是,当我在设备中打开任何屏幕或任何屏幕尺寸时,它总是一个双列网格。

感谢。

3 个答案:

答案 0 :(得分:1)

相反android:numColumns="auto_fit"只需使用:android:numColumns="2" 在每个网格项中,将fill_parent替换为wrap_content。 更复杂的解决方案是在代码中计算屏幕宽度,然后按代码设置项目宽度。

答案 1 :(得分:0)

您需要将android:numColumns更改为2,而不是auto_fit

 <GridView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/newsScrollerContent"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:horizontalSpacing="10dp"
    android:numColumns="2"
    android:verticalSpacing="10dp" >

答案 2 :(得分:0)

您可以使用xml中网格视图的此属性android:numColumns=2或使用此网格视图方法setNumColumns(2)来设置列数。不要使用自动适合