目前我正在尝试在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));
等等。但是图像只是在宽度上拉伸,但高度没有调整。
对于样本,它看起来像这样:
它应该更像这样,但在宽度和高度都拉伸: