如何减少自定义listview android中的行高

时间:2013-07-14 07:10:10

标签: android listview row reduce

我使用rowlayout.xml和自定义适配器创建了自定义列表视图。 heach row有一对textveiws和background,问题是如果我为行设置背景图像,我无法降低高度。如果退出它的高度是如此之小。

我需要创建一个带背景的自定义行并减少我不能的高度,我尝试更改re row.xml高度,但它不起作用。在android的ui遮阳板中它似乎会起作用,但是当我运行它时,行不会改变它的大小。

这是行的代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="80dp"
    android:orientation="horizontal"
    android:paddingLeft="@dimen/lateral_margin"
    android:paddingRight="@dimen/lateral_margin"
    android:background="@drawable/list_detail"
    >

    <TextView
        android:id="@+id/textItemOnList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"  />

    <TextView
        android:id="@+id/textMoneyOnList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

您必须调整与列表视图行大小相同的背景图片。

`   public static Bitmap resizeBitmap(Bitmap photo, float x, float y) {

        try {
            // get current bitmap width and height
            int width = photo.getWidth();
            int height = photo.getHeight();

            // determine how much to scale
            float scaleWidth = x / width;
            float scaleHeight = y / height;

            // create the matrix for the manipulation
            Matrix matrix = new Matrix();
            // resize the bitmap
            matrix.postScale(scaleWidth, scaleHeight);

            // recreate the new bitmap
            Bitmap resizebitmap = Bitmap.createBitmap(photo, 0, 0, width,
                    height, matrix, false);
            return resizebitmap;

        } catch (NullPointerException e) {
            e.printStackTrace();
        } catch (OutOfMemoryError e) {
            e.printStackTrace();
            System.gc();
        }
        return null;
    }
`