使用stretchColumns为TableLayout实现方形imageview内容

时间:2014-08-29 09:41:16

标签: android android-layout

目前我正在尝试在TableRows中实现平方ImageViews,即使列被拉伸也应该是平方的,但不幸的是它并没有像我预期的那样工作。计划很简单。使用TableLayout来托管许多ImageViews,但即使它被拉伸,也要将这些imageview放在里面。这就是我到目前为止所尝试的内容。

<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MyActivity">

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:stretchColumns="*">

        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:baselineAligned="false">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/img1"
                android:src="@drawable/ic_launcher"
                android:scaleType="centerCrop"
                android:adjustViewBounds="true"
                android:cropToPadding="true"
                android:layout_alignTop="@+id/img2"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/img2"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@+id/img1"
                android:layout_toEndOf="@+id/img1"
                android:src="@drawable/ic_launcher"
                android:scaleType="centerCrop"
                android:adjustViewBounds="true"
                android:cropToPadding="true" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/img3"
                android:layout_toEndOf="@+id/img2"
                android:src="@drawable/ic_launcher"
                android:scaleType="centerCrop"
                android:adjustViewBounds="true"
                android:cropToPadding="true"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@+id/img2" />
        </TableRow>

        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tableRow">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/img4"
                android:src="@drawable/ic_launcher"
                android:scaleType="centerCrop"
                android:adjustViewBounds="true"
                android:cropToPadding="true"
                android:layout_alignTop="@+id/img6"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/img5"
                android:layout_toEndOf="@+id/img6"
                android:src="@drawable/ic_launcher"
                android:scaleType="centerCrop"
                android:adjustViewBounds="true"
                android:cropToPadding="true"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@+id/img6" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/img6"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@+id/img4"
                android:layout_toEndOf="@+id/img4"
                android:src="@drawable/ic_launcher"
                android:scaleType="centerCrop"
                android:adjustViewBounds="true"
                android:cropToPadding="true" />
        </TableRow>
    </TableLayout>
</RelativeLayout>

我希望图像在这些imageViews上填充宽度和高度,以使用此代码基于原始图像创建平方图像:

private Bitmap sliceImage(int my_img, int col, int row) {
        /*send the original full image int id here then slice and return per icon*/
        Bitmap icon = BitmapFactory.decodeResource(getResources(), my_img);

        int width = icon.getWidth();
        int height = icon.getHeight();

        int crop_width = width / 3;
        int crop_height = height / 3;

        Bitmap test = Bitmap.createBitmap(icon, col * crop_width, row * crop_height, crop_width, crop_height);

        return test;
    }

并设置:

ImageView img1 = (ImageView) findViewById(R.id.img1);
img1.setImageBitmap(sliceImage(R.drawable.my_img,0,0));

等等。但是图像只是在宽度上拉伸,但高度没有调整。

对于样本,它看起来像这样:

enter image description here

它应该更像这样,但在宽度和高度都拉伸:

enter image description here

0 个答案:

没有答案