android API 10中的网格布局支持

Mad*_*ore 26 grid layout android

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

MH.*_*MH. 36

GridLayout确实已经向后移植以与API级别7及更高版本兼容.它是(某种程度上)支持库的一部分.下载支持库后,您将在本地sdk文件夹中找到位于以下位置的Android库项目:

<sdk_folder>\extras\android\compatibility\v7\gridlayout
Run Code Online (Sandbox Code Playgroud)

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

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


Jas*_*ley 18

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

接下来,<Gridlayout>您可以使用而不是在xml布局文件中使用<android.support.v7.widget.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"
>
Run Code Online (Sandbox Code Playgroud)

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

    <TextView
        android:textSize="32dip"
        app:layout_columnSpan="4"
        app:layout_gravity="center_horizontal"
    />
Run Code Online (Sandbox Code Playgroud)

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

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.android.support:gridlayout-v7:+'
}
Run Code Online (Sandbox Code Playgroud)