android - GridLayout 越界

标签 android android-gridlayout

我正在尝试使用 GridLayout 重现此计算器布局

enter image description here

但这就是我用我尝试过的代码得到的结果。

enter image description here

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

<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>

然而,它总是越界。我试图根据这个线程更改为“android.support.v7.widget.GridLayout”:

GridLayout column is going beyond its bounds

但没有太大帮助。

有什么线索可以让它精确匹配手机尺寸吗?

最佳答案

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

(使用 Genymotion/VM Nexus Android 5.0 和带有 Android 6.0.1 的 Nexus 9 进行测试)

这是最终结果:

<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>

关于android - GridLayout 越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34606789/

相关文章:

java - 如何使用日期字符串和时间字符串创建日期时间字符串?

android - 可以使用 GradientColor 完全在 XML 中定义填充或描边的渐变吗?

android - GridLayout 获取适合区域的按钮

android - 回收者 View 中的动态网格布局

android - Android游戏中的滑动棋子

android - LocationClient requestLocationUpdates 与 PendingIntent

java - Android:调整 EditText 字体大小使文本适合一行

java - Android Studio 网格布局无法正常工作

java - Android:TableLayout 不显示

android - Maven 构建期间的 Alfresco Android SDK 错误