在gridlayout中纵向和横向缩放图像

时间:2017-03-17 17:04:19

标签: java android layout grid

我是Android开发的新手,我正在尝试使用GridLayout创建包含3列的行,每列都有一个imageview。在这种情况下,我使用在photoshop中创建的方形图像,全部为红色,仅用于测试。

这是我目前使用的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_menu"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="me.andrewlarsen.testapp.MenuActivity">

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:rowCount="2"
        android:columnCount="3"
        android:gravity="center"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">


        <ImageView
            android:layout_gravity="fill"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@mipmap/redblock"
            android:layout_row="0"
            android:layout_column="0"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:scaleType="fitXY"
            android:id="@+id/imageView1" />

        <ImageView
            android:layout_gravity="fill"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@mipmap/redblock"
            android:layout_row="0"
            android:layout_column="1"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:scaleType="fitXY"
            android:id="@+id/imageView2" />

        <ImageView
            android:layout_gravity="fill"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@mipmap/redblock"
            android:layout_row="0"
            android:layout_column="2"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:scaleType="fitXY"
            android:id="@+id/imageView3" />

        <ImageView
            android:layout_gravity="fill"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@mipmap/redblock"
            android:layout_row="1"
            android:layout_column="0"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:id="@+id/imageView4" />

        <ImageView
            android:layout_gravity="fill"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@mipmap/redblock"
            android:layout_row="1"
            android:layout_column="1"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:id="@+id/imageView5" />

        <ImageView
            android:layout_gravity="fill"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@mipmap/redblock"
            android:layout_row="1"
            android:layout_column="2"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:id="@+id/imageView6" />

    </GridLayout>
</RelativeLayout>

上面的xml给出的结果如下所示:

enter image description here

所以你可以看到我有2行,这是彼此不同的。在第一行的所有3列中,我添加了 android:scaleType =“fitXY”但是它只是水平缩放,而不是垂直缩放。

我希望它在两个方向上向上扩展,因此结果将是一个更大的正方形。

我试图让它看起来像这样:

enter image description here

当我使用android:scaleType =“fitXY”时,我希望图像在X方向(水平方向)和Y方向(垂直方向)上都可以放大,但不会这样做。

感谢我能得到的所有帮助。

2 个答案:

答案 0 :(得分:1)

问题解决了,不得不使用:

android:adjustViewBounds="true"
每个imageview元素中的

答案 1 :(得分:0)

尝试删除权重(android:layout_columnWeight =“1”和android:layout_rowWeight =“1”),你的redblock的大小是多少?如果可能的话发送你的图片。