【问题标题】:How to use xml attributes from higher api on lower api?如何在较低的 api 上使用较高 api 的 xml 属性?
【发布时间】:2016-08-23 00:19:43
【问题描述】:

我想在较低的 android 系统上使用较高 api 的 xml 属性。如何在不改变太多的情况下做到这一点?比如android:layout_columnWeightandroid:layout_rowWeigh。 这是我的 xml 代码:

<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_row="0"
    android:layout_gravity="fill"
    android:layout_columnWeight="1"
    android:layout_rowWeight="1"
    android:text="Hello"
    android:id="@+id/hello"
    android:onClick="buttonTapped"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="1"
    android:layout_row="0"
    android:layout_gravity="fill"
    android:layout_columnWeight="1"
    android:layout_rowWeight="1"
    android:text="How are you"
    android:id="@+id/howareyou"
    android:onClick="buttonTapped"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_row="1"
    android:layout_gravity="fill"
    android:layout_columnWeight="1"
    android:layout_rowWeight="1"
    android:text="good evening"
    android:id="@+id/goodevening"
    android:onClick="buttonTapped"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="1"
    android:layout_row="1"
    android:layout_gravity="fill"
    android:layout_columnWeight="1"
    android:layout_rowWeight="1"
    android:text="please"
    android:id="@+id/please"
    android:onClick="buttonTapped"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_row="2"
    android:layout_gravity="fill"
    android:layout_columnWeight="1"
    android:layout_rowWeight="1"
    android:text="my name is"
    android:id="@+id/mynameis"
    android:onClick="buttonTapped"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="1"
    android:layout_row="2"
    android:layout_gravity="fill"
    android:layout_columnWeight="1"
    android:layout_rowWeight="1"
    android:text="do you &#10;speak english"
    android:id="@+id/doyouspeakenglish"
    android:onClick="buttonTapped"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_row="3"
    android:layout_gravity="fill"
    android:layout_columnWeight="1"
    android:layout_rowWeight="1"
    android:text="welcome"
    android:id="@+id/welcome"
    android:onClick="buttonTapped"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="1"
    android:layout_row="3"
    android:layout_gravity="fill"
    android:layout_columnWeight="1"
    android:layout_rowWeight="1"
    android:text="i live in"
    android:id="@+id/ilivein"
    android:onClick="buttonTapped"/>

请不要说要使用其他方法,gridLayout非常有用,但我不能在较低的android系统上使用。

【问题讨论】:

  • 指定针对 GridLayout 的 API 级别太低可能会有所帮助。不是 v7 支持库吗?
  • 这些属性与 API 级别无关。这些属性与容器相关联。您可以使用the attributes defined on GridLayout.LayoutParams,因为您的小部件位于GridLayout 内。并且,作为答案说明,如果您想在 API 级别 14 之前使用 GridLayout,请使用 support-v4 库中的 GridLayout 反向端口。

标签: android xml grid-layout


【解决方案1】:

在这种情况下,您可以使用 Android 支持库中的 android.support.v7.widget.GridLayout 代替标准的 GridLayout

【讨论】:

    【解决方案2】:

    只需从支持库切换到GridLayout

    这样您就可以在较旧的 API 上使用 layout_columnWeight,但将 android 命名空间前缀替换为 app

    Reference

    唯一的其他选择是在您的layout-v21 目录或其他东西中使用替代布局文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 2013-09-13
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多