Android - ListView更改视图属性

时间:2014-07-03 20:21:27

标签: android android-layout listview

我有ListView,我想在每个项目的一侧放置一个小矩形。为此,我做了以下渲染布局:

rendered layout

<?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:padding="3dp">

    <View
        android:layout_width="5dp"
        android:layout_height="fill_parent"
        android:id="@+id/item_color_image"
        android:background="@color/wallet_holo_blue_light"
        android:layout_marginRight="3dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginTop="3dp"
        android:layout_marginBottom="3dp" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/item_icon_image"
        android:src="@drawable/m"
        android:layout_toRightOf="@+id/item_color_image"
        android:layout_centerVertical="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Business Name"
        android:id="@+id/item_title_text"
        android:layout_toRightOf="@+id/item_icon_image"
        android:layout_marginLeft="3dp"
        android:textStyle="bold"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_alignTop="@+id/item_icon_image" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Distance"
        android:id="@+id/item_distance_text"
        android:layout_alignLeft="@+id/item_title_text"
        android:layout_alignBottom="@+id/item_icon_image"
        android:layout_marginBottom="-10dp" />
</RelativeLayout>

当我在一个框架中膨胀这个布局时,它工作得很好.....但是当我在ListView内膨胀时我得到了这个:

Error in List

忽略矩形的高度以匹配容器的高度。

我使用此代码对其进行充气:

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View itemView = convertView;

        if (itemView == null) {
            itemView = inflater.inflate(R.layout.business_item_view, parent, false);
        }

        Business currentBusiness = businesses.get(position);

        ImageView icon = (ImageView) itemView.findViewById(R.id.item_icon_image);
        icon.setImageBitmap(currentBusiness.getIcon());
        TextView name = (TextView) itemView.findViewById(R.id.item_title_text);
        name.setText(currentBusiness.getName());
        TextView distance = (TextView) itemView.findViewById(R.id.item_distance_text);
        distance.setText("2 Km");  // TODO: Calculate distance

        return itemView;
    }

我该如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:1)

将ListView行的根项目设为match_parent for height并不合理;每个项目都将填充ListView。我希望在某个地方自动更改为wrap_content。

如果RelativeLayout的高度为wrap_content,则RelativeLayouts不支持match_parent为高度的孩子。它适用于LinearLayouts,因此您应该考虑切换到它。资料来源:combining wrap_content on parent and fill_parent on child