1

我制作了使用 Listview 的 App

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>

现在,我想按一项填充屏幕。我想在 custom_cell.xml 中写 match_parent,但不能。

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

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

--------已编辑---我上传了截图。黑线是一项单独的项目。我想调整屏幕尺寸 捕获

4

2 回答 2

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 实例

于 2013-03-04T08:17:53.530 回答
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,我用它的宽度作为项目的宽度,希望对你有帮助。

于 2013-09-03T11:00:50.957 回答