使用垂直图像调整网格大小 - android

时间:2016-09-14 19:51:08

标签: android layout resize

我需要根据尺寸将图像容器大小设置为“GridLayout”。

抓住他们的水平尺寸,但我也需要垂直尺寸。

我错过了什么?感谢

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/fondo_01">


<GridLayout
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:useDefaultMargins="false"
    android:background="@drawable/corners_main_layout"
    android:animationCache="false"
    android:layout_margin="@dimen/padding_white"
    tools:layout_margin="@dimen/padding_white"
    android:columnOrderPreserved="false"
    android:columnCount="3">


    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:orientation="vertical"
        android:layout_columnWeight="1"
        android:id="@+id/linearLayout">
        <ImageView
            android:src="@drawable/ic_skinav"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:id="@+id/idskinav" />
        <TextView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/skinav"
            android:layout_gravity="center"
            android:textColor="@android:color/black"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:orientation="vertical"
        android:layout_columnWeight="1"
        android:id="@+id/linearLayout9">
        <ImageView
            android:src="@drawable/ic_social"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:id="@+id/idsocial" />
        <TextView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/social"
            android:layout_gravity="center"
            android:textColor="@android:color/black"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:orientation="vertical"
        android:layout_columnWeight="1"
        android:id="@+id/linearLayout8">
        <ImageView
            android:src="@drawable/ic_stats"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:id="@+id/idstats" />
        <TextView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/stats"
            android:layout_gravity="center"
            android:textColor="@android:color/black" />
    </LinearLayout>

    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:orientation="vertical"
        android:layout_columnWeight="1"
        android:id="@+id/linearLayout10"

        >
        <ImageView
            android:src="@drawable/ic_alerts"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:id="@+id/idalerts" />
        <TextView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/alerts"
            android:layout_gravity="center"
            android:textColor="@android:color/black" />
    </LinearLayout>

    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:orientation="vertical"
        android:layout_columnWeight="1"
        android:id="@+id/linearLayout2">
        <ImageView
            android:src="@drawable/ic_inbox"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:id="@+id/idinbox" />
        <TextView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/inbox"
            android:layout_gravity="center"
            android:textColor="@android:color/black"
            />

    </LinearLayout>

    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:orientation="vertical"
        android:layout_columnWeight="1"
        android:id="@+id/linearLayout3">
        <ImageView
            android:src="@drawable/ic_info"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:id="@+id/idinfo" />
        <TextView
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/info"
            android:layout_gravity="center"
            android:textColor="@android:color/black"
            />
    </LinearLayout>

</GridLayout>


</LinearLayout>

还有另一种更简单的方法吗?我尝试了新的ConstraintLayout,但我还没有成功。

------ ---- UPDATE

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用方形图像视图来正确调整网格项的大小。

创建一个单独的类,用于为ImageView动态定义应继承ImageView类的大小,如下所示:

    public class SquareImageView extends ImageView {

    public SquareImageView(Context context) {
        super(context);
    }

    public SquareImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SquareImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, widthMeasureSpec);

    int width = getMeasuredWidth();
        setMeasuredDimension(width, width);

    }
}

setMeasuredDimension(宽度,宽度);将自动将您的身高设置为宽度。

在xml文件中,使用此类作为视图来代替ImageView,如下所示:

<com.packagepath.SquareImageView
    android:id="@+id/Imageview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />