如何在屏幕尺寸上调整Listview项目

时间:2013-03-04 07:18:27

标签: android android-layout android-listview

我制作使用Listview的应用程序

main_acivity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/common_bg_common"
    tools:context=".MainActivity" >
    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="#000000"
        android:dividerHeight="3sp" >
    </ListView>

</RelativeLayout>

和costomItem低于

costomo_cell.xml

    <?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"
    android:background="#FFFFFF" >

    <LinearLayout
        android:id="@+id/linear1"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_alignParentTop="true"
        android:background="#cc9933"
        android:orientation="vertical" >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_vertical|center_horizontal"
            android:text="dummyCanvas"
            android:textColor="#000000" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linear2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/linear1"
        android:background="#cc3333"
        android:orientation="vertical" >

        <TextView 
            android:id="@+id/_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#000000"/>
    </LinearLayout>

</RelativeLayout>

现在,我想通过One Item填充Screen。 我想在custom_cell.xml中编写match_parent,但是不能。

我不想写xxdp。 Linear1的屏幕尺寸为2/3。 其他内容(linear2)是1/3大小...

我如何配置自定义单元格布局?

--------编辑--- 我上传scrennshot。 黑线是一个项目separete。 我想调整屏幕尺寸 capture

2 个答案:

答案 0 :(得分:3)

class MyListItemView extends LinearLayout {

public MyListItemView(Context context) {
    super(context);
    inflate(getContext(), R.layout.costomo_cell, this);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int height = getResources().getDisplayMetrics().heightPixels;
    super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST));
}

现在在适配器的getView实例化MyListItemView实例

答案 1 :(得分:1)

我使用 setLayoutParams 在BaseAdapter中执行此操作。

public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = getLayoutInflater().inflate(R.list_item, null);
        convertView.setLayoutParams(new AbsListView.LayoutParams(
            getListView().getWidth(), AbsListView.LayoutParams.WRAP_CONTENT));
    }
    other code...
}

getListView()是一个wrap方法,它返回一个ListView,我用它作为项目宽度,希望对你有所帮助。