Android API 10中的网格布局支持

26

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

3个回答

36

GridLayout 已经被后向兼容到 API level 7 及以上。它是支持库的一部分(有点)。在下载了支持库之后,您会在本地 sdk 文件夹中找到一个 Android 库项目:

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

将其设置为您正在开发的项目的依赖项。之后,您需要将项目中引用的所有内容从 level 15 版本更改为此兼容性版本,以支持 pre-ICS 设备。在布局文件中,将您的 XML 从 GridLayout 更改为 android.support.v7.widget.GridLayout。使用方式应该是类似的,如果不是完全相同的话。

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


谢谢,伙计...它对我有用!!!而且你关于空间小部件是正确的,我通过使用透明的文本视图解决了这个问题。 - Madhav Kishore
关于空间小部件:如果您仅使用空间小部件来占用布局空间的视图,请考虑使用普通视图。基本视图占用布局空间,但是由子类实际实现绘图,因此理论上,视图本身不进行任何绘制,因此是透明的。 - Neilers
在我的情况下,导入项目后,我需要重新启动Eclipse。 - Jichao

18

如果您使用Android Studio,一旦下载了支持库(如@MH所提到的),您必须使用文件->导入模块...,然后选择GridLayout支持的位置,对我来说是这里:<sdk_folder>\extras\android\support\v7\gridlayout

接下来,您需要在xml布局文件中使用<android.support.v7.widget.GridLayout>而不是<Gridlayout>。以下是一个例子:

<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,如上所示和子元素中:

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

最后,必须将GridLayout支持库的参考添加到\src\build.gradle文件的dependencies部分中:

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

在当前的Android Studio中,您还可以转到文件->项目结构->模块下的您模块->依赖项。这要容易一些。 - SleepProgger

4
或者另一个选择是这个第三方向后兼容的实现: 如果你需要向后兼容到API 3级别,它也能够支持,并且还包括了“Space”小部件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接