android - 支持库中的 GridLayout 在 API 16-17 上无法正常工作

标签 android android-support-library android-gridlayout

我需要创建类似计算器键盘的东西。 GridLayout 非常适合它(并且只适合它:))。因此,我使用支持库中的一个(compile 'com.android.support:gridlayout-v7:22.2.0'。这是我的 xml:

<android.support.v7.widget.GridLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:columnCount="4"
        app:rowCount="4"
        android:layout_gravity="bottom"
        android:layout_weight="4"
        app:alignmentMode="alignBounds"
        app:rowOrderPreserved="false"
        app:orientation="horizontal">

    <Button android:text="7"
            android:id="@+id/button7"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="8"
            android:id="@+id/button8"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="9"
            android:id="@+id/button9"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="←"
            android:id="@+id/button_backspace"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>

    <Button android:text="4"
            android:id="@+id/button4"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="5"
            android:id="@+id/button5"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="6"
            android:id="@+id/button6"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="@string/clean"
            android:id="@+id/button_clear"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>

    <Button android:text="1"
            android:id="@+id/button1"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="2"
            android:id="@+id/button2"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="3"
            android:id="@+id/button3"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button
            android:id="@+id/button_clear_all"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            app:layout_gravity="fill_vertical"
            android:text="@string/clean_all"
            app:layout_rowSpan="2"
            android:background="@color/calculator_button_separator_color"
            android:textColor="@drawable/light_button_text_color"
            style="@style/CalculatorButton"/>

    <Button
            android:id="@+id/button0"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            app:layout_gravity="fill_horizontal"
            android:text="0"
            app:layout_columnSpan="2"
            style="@style/CalculatorButton"/>
    <Button android:text="."
            android:id="@+id/button_dot"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>

</android.support.v7.widget.GridLayout>

在 Android 4.3-4.4 上一切正常:

但是在Android 4.1-4.2上有问题:

所以,我不明白我的错在哪里。

最佳答案

嗯,这确实是支持库中的错误。我用编译'com.android.support:gridlayout-v7:22.0.+'替换了编译'com.android.support:gridlayout-v7:22.2.0',用代码做了一些魔法,检查了4.1和4.3,现在它是工作!

<android.support.v7.widget.GridLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:columnCount="4"
        app:rowCount="4"
        android:layout_gravity="bottom"
        android:layout_weight="4"
        app:alignmentMode="alignBounds"
        app:orientation="horizontal">

    <Button android:text="7"
            android:id="@+id/button7"
            app:layout_gravity="fill"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="8"
            android:id="@+id/button8"
            app:layout_gravity="fill"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="9"
            android:id="@+id/button9"
            app:layout_gravity="fill"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="←"
            android:id="@+id/button_backspace"
            app:layout_columnWeight="1"
            app:layout_gravity="fill"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>

    <Button android:text="4"
            android:id="@+id/button4"
            app:layout_columnWeight="1"
            app:layout_gravity="fill"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="5"
            android:id="@+id/button5"
            app:layout_columnWeight="1"
            app:layout_gravity="fill"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="6"
            android:id="@+id/button6"
            app:layout_columnWeight="1"
            app:layout_gravity="fill"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="@string/clean"
            app:layout_gravity="fill"
            android:id="@+id/button_clear"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>

    <Button android:text="1"
            android:id="@+id/button1"
            app:layout_columnWeight="1"
            app:layout_gravity="fill"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="2"
            android:id="@+id/button2"
            app:layout_columnWeight="1"
            app:layout_gravity="fill"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
    <Button android:text="3"
            android:id="@+id/button3"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            app:layout_gravity="fill"
            style="@style/CalculatorButton"/>
    <Button
            android:id="@+id/button_clear_all"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            app:layout_gravity="fill"
            android:text="@string/clean_all"
            app:layout_rowSpan="2"
            android:background="@color/calculator_button_separator_color"
            android:textColor="@drawable/light_button_text_color"
            style="@style/CalculatorButton"/>

    <Button
            android:id="@+id/button0"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            app:layout_gravity="fill"
            android:text="0"
            app:layout_columnSpan="2"
            style="@style/CalculatorButton"/>
    <Button android:text="."
            android:id="@+id/button_dot"
            app:layout_gravity="fill"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            style="@style/CalculatorButton"/>
</android.support.v7.widget.GridLayout>

关于android - 支持库中的 GridLayout 在 API 16-17 上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31377357/

相关文章:

android - 如何创建 Notification.Action 并将其添加到自定义通知

android - 在 android 中膨胀类 android.support.design.widget.CollapsingToolbarLayout 时出错

android - Android游戏中的滑动棋子

android - 获取 Facebook 的 APP_ID?

Android 后退按钮覆盖帮助

android - 支持库中的 RecyclerView 在哪里?

java - 带有方形子项的方形 GridLayout(边=父宽度)

java - 从 jsonobject 中删除行

android - 在显示 UI 的 android 服务中检测 'home button pressed' 事件(类似于 facebook 聊天头)

Android 网格形成