GridLayout超出范围

gmm*_*mmo 2 android android-gridlayout

我试图用GridLayout重现这个计算器布局

在此输入图像描述

但这是我尝试的代码所得到的.

在此输入图像描述

实际上在设备上它变得更糟,它会削减必须跨越两行的最后一个相等按钮.

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#000000"
    android:columnCount="5"
    android:rowCount="2"
    android:orientation="horizontal"
    android:padding="5dp">

    <Button
        android:layout_columnSpan="1"
        android:layout_rowSpan="1"
        android:text="1" />

    <Button
        android:layout_columnSpan="1"
        android:layout_rowSpan="1"
        android:text="2" />

    <Button
        android:layout_columnSpan="1"
        android:layout_rowSpan="1"
        android:text="3" />

    <Button
        android:layout_columnSpan="1"
        android:layout_rowSpan="1"
        android:text="-" />

    <Button
        android:layout_columnSpan="1"
        android:layout_rowSpan="2"
        android:layout_gravity="fill_vertical"
        android:text="=" />


    <Button
        android:layout_columnSpan="2"
        android:layout_rowSpan="1"
        android:layout_gravity="fill_horizontal"
        android:text="0" />

    <Button
        android:layout_columnSpan="1"
        android:layout_rowSpan="1"
        android:text="." />

    <Button
        android:layout_columnSpan="1"
        android:layout_rowSpan="1"
        android:text="+" />

    <Space
        android:layout_columnSpan="1"
        android:layout_rowSpan="1"
        android:text="-" />

    <Space
        android:layout_columnSpan="1"
        android:layout_rowSpan="1"
        android:text="=" />

</GridLayout>
Run Code Online (Sandbox Code Playgroud)

然而,它一直走出界限.我试图根据这个帖子改为"android.support.v7.widget.GridLayout":

GridLayout列超出了它的范围

但没多大帮助.

任何线索如何使其精确匹配手机大小?

Exa*_*aqt 5

将视图更改为android.support.v7.widget.GridLayout.并且还将app:layout_columnWeight添加到每个视图,并将layout_width设置为0dp.不需要空间视图.

(使用Genymotion/VM Nexus Android 5.0和Nexus 9与Android 6.0.1测试)

这是最终结果:

<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#fff"
    app:columnCount="5"
    app:rowCount="2"
    app:orientation="horizontal"
    android:padding="5dp">

    <Button
        app:layout_columnWeight="1"
        android:layout_width="0dp"
        app:layout_columnSpan="1"
        app:layout_rowSpan="1"
        android:text="1" />

    <Button
        app:layout_columnWeight="1"
        android:layout_width="0dp"
        app:layout_columnSpan="1"
        app:layout_rowSpan="1"
        android:text="2" />

    <Button
        app:layout_columnWeight="1"
        android:layout_width="0dp"
        app:layout_columnSpan="1"
        app:layout_rowSpan="1"
        android:text="3" />

    <Button
        app:layout_columnWeight="1"
        android:layout_width="0dp"
        app:layout_columnSpan="1"
        app:layout_rowSpan="1"
        android:text="-" />

    <Button
        app:layout_columnWeight="1"
        android:layout_width="0dp"
        app:layout_columnSpan="1"
        app:layout_rowSpan="2"
        app:layout_gravity="fill_vertical"
        android:text="=" />


    <Button
        app:layout_columnWeight="1"
        android:layout_width="0dp"
        app:layout_columnSpan="2"
        app:layout_rowSpan="1"
        app:layout_gravity="fill_horizontal"
        android:text="0" />

    <Button
        app:layout_columnWeight="1"
        android:layout_width="0dp"
        app:layout_columnSpan="1"
        app:layout_rowSpan="1"
        android:text="." />

    <Button
        app:layout_columnWeight="1"
        android:layout_width="0dp"
        app:layout_columnSpan="1"
        app:layout_rowSpan="1"
        android:text="+" />

</android.support.v7.widget.GridLayout>
Run Code Online (Sandbox Code Playgroud)