在Android API 10中的网格布局支持

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

GridLayout确实已经被移植到API级别7以上。 这是(某种)支持库的一部分。 下载支持库之后,您会在本地sdk文件夹中find一个Android库项目,位于:

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

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

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

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

接下来,不是在你的xml布局文件中使用<Gridlayout> ,而是使用<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" > 

布局中的元素将引用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:+' } 

或者另一种select是这个第三方向后兼容的实现:

这与API级别3兼容,如果您需要走得更远,还包括Space小部件。