TextView在CardView中重叠了ImageView

时间:2014-11-16 19:45:33

标签: android android-layout android-listview android-cardview

我试图做一个CardView的ListView。 CardView在顶部包含一个ImageView,在底部包含几个TextView。 我设法做正确的事情,虽然由于某种原因图像不适合CardView(因此它被裁剪在它的顶部)并且TextViews重叠图像的其余部分。 我尝试了很多不同的解决方案,虽然没有什么对我有用,但我还没弄明白为什么。

主要布局:     

    <ListView android:id="@+id/item_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></ListView>

</LinearLayout>

CardView布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin">

    <android.support.v7.widget.CardView android:id="@+id/item_card"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <ImageView android:id="@+id/item_image"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>

            <TextView android:id="@+id/item_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

            <TextView android:id="@+id/item_image_desc"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <TextView android:id="@+id/item_desc"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </LinearLayout>

    </android.support.v7.widget.CardView>

</LinearLayout>

getView()methid:

public View getView(int position, View convertView, ViewGroup parent) {
        View cardView;

        if (convertView == null) {
            LayoutInflater inflater = ((Activity) this.getContext()).getLayoutInflater();
            cardView = inflater.inflate(R.layout.item_card_list, parent, false);
        }
        else {
            cardView = convertView;
        }

        ImageView itemImage = (ImageView)cardView.findViewById(R.id.item_image);
        TextView itemTitle = (TextView)cardView.findViewById(R.id.item_title);
        TextView imgDesc = (TextView)cardView.findViewById(R.id.item_image_desc);
        TextView itemDesc = (TextView)cardView.findViewById(R.id.item_desc);

        Item currItem = this.getItem(position);

        itemImage.setImageDrawable(currItem.mImageDrawable);
        itemTitle.setText(currItem.mTitle);
        imgDesc.setText(currItem.mDescription.imageDesc);
        itemDesc.setText(currItem.mDescription.descText);

        itemImage.setScaleX((float)1000 / currItem.mImageDrawable.getMinimumWidth());
        itemImage.setScaleY((float)1000 / currItem.mImageDrawable.getMinimumWidth());

        return (cardView);
    }

似乎CardViews有最大高度或其他东西......无法告诉:(

提前致谢!

1 个答案:

答案 0 :(得分:0)

我的方法都错了。我意识到我使用的setScale()方法只缩放了位图,而不是ImageView本身。虽然当我试图在它放在画布上之前尝试调整ImageView的大小时,我也没有运气。所以我这样做了:

在我使用小位图分配后,我没有尝试调整ImageView的大小,而是在将位图设置为ImageView之前调整了位图的大小。修正了一切:)