将android listview大小修复为特定长度

时间:2013-01-15 08:25:10

标签: android listview layout relativelayout

我创建了一个布局文件。其中包含其他布局。   其中还有一个列表视图。我给它修复高度。   它在我的屏幕上工作正常,但是当我们将它用于其他屏幕尺寸时   它没有完整显示。它如何适用于所有尺寸的设备。  代码如下。

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
     android:background="@drawable/bg" >

    <include
        android:id="@+id/mainScreenHeader"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        layout="@layout/main_screen_header" />


    <include
        android:id="@+id/mainScreenListHeader"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/mainScreenHeader"
        layout="@layout/main_screen_list_header" >
    </include>

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="270dp"
        android:layout_below="@+id/mainScreenListHeader"
        android:cacheColorHint="#00000000"
        android:drawSelectorOnTop="false" />

     <include
        android:id="@+id/mainScreenFilterClient"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/list"
        android:layout_marginTop="10dp"
        layout="@layout/main_screen_filter_client" >
    </include>

    <include
        android:id="@+id/footer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/mainScreenFilterClient"
        android:layout_marginTop="10dp"
        layout="@layout/footer" >
    </include>
    </RelativeLayout>

1 个答案:

答案 0 :(得分:0)

你必须根据设备屏幕大小预先确定行数,然后计算每行的高度。你不应该明确地给出android:layout_height =“270dp”。 你可以得到屏幕的高度,并决定列表视图中的行数可以参考:

    private int retrieveDimensions() {
        int noOfRows= 0;
        int screenSize = getResources().getConfiguration().screenLayout &
                Configuration.SCREENLAYOUT_SIZE_MASK;

        switch(screenSize) {
        case Configuration.SCREENLAYOUT_SIZE_LARGE:
        case Configuration.SCREENLAYOUT_SIZE_XLARGE:
            noOfRows= 5;
            break;
        case Configuration.SCREENLAYOUT_SIZE_NORMAL:
            noOfRows= 4;
            break;
        case Configuration.SCREENLAYOUT_SIZE_SMALL:
            noOfRows= 3;
            break;
    }