【问题标题】:GridLayout going out of boundsGridLayout 超出范围
【发布时间】:2016-01-05 18:04:21
【问题描述】:

我正在尝试使用 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>

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

GridLayout column is going beyond its bounds

但没有多大帮助。

任何线索如何使它与手机尺寸精确匹配?

【问题讨论】:

    标签: android android-gridlayout


    【解决方案1】:

    将视图更改为 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>
    

    【讨论】:

    • 你赢了!感谢您的回答!
    猜你喜欢
    • 2023-03-27
    • 2012-05-04
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2014-02-25
    • 2013-02-28
    相关资源
    最近更新 更多