【发布时间】:2016-01-25 16:22:09
【问题描述】:
我有一个自定义列表视图。 listview 数据是由一些 textview 为每一行水平设置的。在主布局中,我有相同数量的 textView 用于设置这些列的标题。我的问题是,主要布局与 weight 属性配合良好。但是包含 textview 的 listview 的自定义值设置布局不适用于 weight 属性。
主布局:(权重属性正常工作)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:weightSum="8">
<TextView
android:layout_weight="0"
android:id="@+id/cid"
android:layout_width="0dp"
android:textSize="16dp"
android:text="B.Id" />
<TextView
android:layout_weight="1"
android:id="@+id/nm"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Name" />
<TextView
android:layout_weight=".9"
android:id="@+id/mob"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Mobile" />
<TextView
android:layout_weight="1.2"
android:id="@+id/eml"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Email" />
<TextView
android:layout_weight=".8"
android:id="@+id/bk_no"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Bike No" />
<TextView
android:layout_weight=".4"
android:id="@+id/dy_rt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Rate" />
<TextView
android:layout_weight=".9"
android:id="@+id/frm"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="From Date" />
<TextView
android:layout_weight=".9"
android:id="@+id/to"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="To Date" />
<TextView
android:layout_weight=".25"
android:id="@+id/dy"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Dys" />
<TextView
android:layout_weight=".45"
android:id="@+id/cst"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight="0"
android:id="@+id/vid"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="V.ID" />
<TextView
android:layout_weight=".9"
android:id="@+id/book_dt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="1dp"
android:text="Bk Date" />
<TextView
android:layout_weight=".3"
android:id="@+id/rting"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Rating" />
</LinearLayout>
<ListView
android:id="@+id/list_past_report"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></ListView>
</LinearLayout>
</LinearLayout>
自定义 ListView 值设置布局:(report_custom_list)(权重属性不起作用)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/cus_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:weightSum="8" >
<TextView
android:layout_weight="0"
android:id="@+id/id"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight="1"
android:id="@+id/nm"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight=".9"
android:id="@+id/mob"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight="1.2"
android:id="@+id/eml"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight=".8"
android:id="@+id/bk_no"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight=".4"
android:id="@+id/dy_rt"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight=".9"
android:id="@+id/frm"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight=".9"
android:id="@+id/to"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight=".25"
android:id="@+id/dy"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight=".45"
android:id="@+id/cst"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight="0"
android:id="@+id/vid"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight=".9"
android:id="@+id/book_dt"
android:layout_width="0dp"
android:layout_height="wrap_content" />
<TextView
android:layout_weight=".3"
android:id="@+id/rting"
android:layout_width="0dp"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
自定义适配器设置值:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final Object[] id_obj=_id.toArray();
Object[] name_obj=c_name1.toArray();
Object[] mb_obj=m_no1.toArray();
Object[] eml_obj=email1.toArray();
...
Holder holder=new Holder();
View rowView;
rowView = inflater.inflate(R.layout.report_custom_list, null);
if(position%2==0)
rowView.setBackgroundColor(Color.YELLOW);
else
rowView.setBackgroundColor(Color.GRAY);
holder.tv=(TextView) rowView.findViewById(R.id.id);
holder.tv1=(TextView) rowView.findViewById(R.id.nm);
holder.tv2=(TextView) rowView.findViewById(R.id.mob);
...
holder.tv.setText((CharSequence) id_obj[position]);
holder.tv1.setText((CharSequence) name_obj[position]);
holder.tv2.setText((CharSequence) mb_obj[position]);
...
rowView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
return rowView;
}
在我硬编码 textview 的宽度之前。但如果它进入不同的屏幕,设计就会崩溃。如何解决这个问题?
【问题讨论】:
标签: android listview android-custom-view android-layout-weight