我开发了一个目标API为15的应用程序。布局包括网格布局。现在当我将目标API更改为10时,我遇到了与网格布局和另一个元素“空间”的问题。 Eclipse提示我下载支持2.3.3版本的库,我也这样做了...但仍然存在问题。
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
来替换。
如果您使用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:+'
}