我制作使用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。 我想调整屏幕尺寸
答案 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,我用它作为项目宽度,希望对你有所帮助。