【问题标题】:Grid Layout support in android API 10android API 10 中的网格布局支持
【发布时间】:2012-05-03 22:27:14
【问题描述】:

我开发了一个目标 API 为 15 的应用程序。布局包括网格布局。现在,当我将 Target API 更改为 10 时,我遇到了网格布局和另一个元素“空间”的问题。 Eclipse 提示我下载 2.3.3 的支持库,我这样做了……但仍然有问题。

【问题讨论】:

    标签: android layout grid


    【解决方案1】:

    GridLayout 确实已被向后移植以兼容 API 级别 7 及更高级别。它是(某种)支持库的一部分。下载支持库后,您会在本地 sdk 文件夹中找到一个 Android 库项目:

    <sdk_folder>\extras\android\compatibility\v7\gridlayout
    

    将其设置为您正在处理的项目的依赖项。之后,您需要将整个项目中的引用从 15 级版本更改为此兼容性版本,以支持 ICS 之前的设备。在布局文件中,将您的 xml 从 GridLayout 更改为 android.support.v7.widget.GridLayout。用法应该相似,如果不相同。

    关于Space 小部件:我实际上还没有使用过这个(还),但它似乎可以通过在现有视图上设置边距/填充或添加您自己的通用View 来代替那是完全透明的。

    【讨论】:

    • 谢谢队友...它对我有用!!!是的,你很习惯空间小部件,我使用透明的文本视图来解决问题
    • 关于空间小部件:如果您仅将空间小部件用于占用布局空间的视图,请考虑使用普通视图。一个基本的view会占用布局空间,但是实际绘制是由子类来实现的,所以理论上View本身不做任何绘制,所以是透明的。
    • 今晚这救了我的命。谢谢!
    • 在我的情况下,导入项目后,我需要重新启动eclipse。
    【解决方案2】:

    如果使用 Android Studio,一旦你下载了支持库(如 @MH. 提到的),你必须使用 File-&gt;Import Module...,然后选择 GridLayout 支持的位置,对我来说位于这里:&lt;sdk_folder&gt;\extras\android\support\v7\gridlayout

    接下来,不要在 xml 布局文件中使用 &lt;Gridlayout&gt;,而是使用 &lt;android.support.v7.widget.GridLayout&gt;。这是一个例子:

    <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="match_parent"
        app:useDefaultMargins="true"
        app:alignmentMode="alignBounds"
        app:columnOrderPreserved="false"
        app:columnCount="4"
    >
    

    布局中的元素将引用app 而不是android 用于如上所示和子元素中的GridLayout 属性:

        <TextView
            android:textSize="32dip"
            app:layout_columnSpan="4"
            app:layout_gravity="center_horizontal"
        />
    

    最后,必须将 GridLayout 支持库引用添加到\src\build.gradledependencies 部分:

    dependencies {
        compile 'com.android.support:appcompat-v7:+'
        compile 'com.android.support:gridlayout-v7:+'
    }
    

    【讨论】:

    • 在当前的 Android Studio 中你也可以去 File -> Project Structure -> You module under modules -> Dependencies 。这有点容易。
    【解决方案3】:

    或者另一种选择是third-party backwards compatible implementation:

    这与 API 级别 3 兼容,如果您需要返回那么远,它还包括 Space 小部件。

    【讨论】:

      猜你喜欢
      • 2019-04-12
      • 2018-04-16
      • 2023-03-10
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 2014-08-26
      相关资源
      最近更新 更多