我开发了一个目标API为15的应用程序。该布局包含网格布局。现在,当我将Target API更改为10时,我遇到了网格布局和另一个元素“空间”的问题。 Eclipse提示我下载2.3.3的支持库,我做了......但仍然有问题。
答案 0 :(得分:36)
GridLayout
向后移植以与API级别7及更高版本兼容。它是(某种程度上)支持库的一部分。下载支持库后,您将在位于以下位置的本地sdk文件夹中找到一个Android库项目:
<sdk_folder>\extras\android\compatibility\v7\gridlayout
将其设置为您正在处理的项目的依赖项。之后,您需要将整个项目中的引用从15级版本更改为此兼容版本,以便支持pre-ICS设备。在布局文件中,将您的xml从GridLayout更改为android.support.v7.widget.GridLayout。用法应该相似,如果不相同的话。
关于Space
窗口小部件:我还没有实际使用过这个窗口小部件,但它似乎可以通过在现有视图上设置边距/填充或添加自己的通用{来代替{1}}这是完全透明的。
答案 1 :(得分:18)
如果使用Android Studio,一旦您下载了支持库(如提及的@MH),您必须使用File->Import Module...
,然后选择GridLayout支持的位置,对我来说就是这里的位置:{{1 }}
接下来,您使用<sdk_folder>\extras\android\support\v7\gridlayout
而不是在xml布局文件中使用<Gridlayout>
。这是一个例子:
<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
最后,必须将GridLayout支持库引用添加到 <TextView
android:textSize="32dip"
app:layout_columnSpan="4"
app:layout_gravity="center_horizontal"
/>
的{{1}}部分:
dependencies
答案 2 :(得分:4)
或另一种选择是third-party backwards compatible implementation:
这可以与API级别3兼容,如果你需要那么远,它还包括Space小部件。