I had developed an app with target API as 15. The layout includes a grid layout. Now when i am changing the Target API to 10 I am getting issues with the grid Layout and another element 'space'. Eclipse prompts me to download a supporting library for 2.3.3, Which i did... But still having the issue.
3 Answers
GridLayout
has indeed been backported to be compatible with API level 7 and up. It's (sort of) part of the support library. After you've downloaded the support library, you'll find an Android library project in your local sdk folder located at:
<sdk_folder>\extras\android\compatibility\v7\gridlayout
Set it up as dependency of the project you're working on. After that, you'll need to change the references throughout your project from the level 15 version to this compatibility one in order to support pre-ICS devices. In the Layout files change your xml from GridLayout to android.support.v7.widget.GridLayout. Usage should be similar, if not identical.
Regarding the Space
widget: I haven't actually used this one (yet), but it appears to be something that could be replaced by either setting margin/padding on existing views or adding in your own generic View
that is completely transparent.
-
Thanx mate... It worked for me!!! and yes you are rite abt the space widget, I got around using a transparent textview – Madhav Kishore Apr 24 '12 at 09:36
-
About the space widget: If you're using the space widget just for a view that takes up layout space, consider using a normal View. A basic view takes up layout space, but it's up to the subclass to actually implement drawing, so theoretically, View itself doesn't do any drawing and is therefore transparent. – Neilers Nov 28 '12 at 04:37
-
In my case, after import the projet, i need to restart the eclipse. – Jichao Mar 11 '15 at 04:06
If using Android Studio, once you've downloaded the support library (as @MH. mentioned) you must use File->Import Module...
, then select the location of GridLayout support, which for me was located here: <sdk_folder>\extras\android\support\v7\gridlayout
.
Next, instead of using <Gridlayout>
in your xml layout file, you use <android.support.v7.widget.GridLayout>
. Here is an example:
<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"
>
Elements in the layout will reference app
instead of android
for GridLayout properties as seen above and in child elements:
<TextView
android:textSize="32dip"
app:layout_columnSpan="4"
app:layout_gravity="center_horizontal"
/>
Finally, the GridLayout support library reference must be added to the dependencies
section of \src\build.gradle
:
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile 'com.android.support:gridlayout-v7:+'
}

- 2,459
- 1
- 31
- 40
-
In the current Android Studio you can also go to File -> Project Structure -> You module under modules -> Dependencies . This is a bit easier. – SleepProgger Aug 07 '16 at 19:06
Or another alternative is this third-party backwards compatible implementation:
This is compatible back to API level 3, if you need to go that far back, and it also includes the Space widget.

- 1,521
- 11
- 18