Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting up Android support package v7 for eclipse - GridLayout

I've been trying this all evening to no avail so I'm going to list my exact steps starting from scratch.

  • I've installed the support package via SDK manager.
  • I create a new android project which I call "testinggridlayout".
  • The build target I select is Android 2.1 API 7.
  • List item

This will be my project which I want to be able to create a grid layout on.


To set up the support package these are my steps:

  • Right-click the project I've just created and select - New - Android Project
  • Name it GridLayout and select create project from existing source and browse to:

android-sdks\extras\android\support\v7\gridlayout

  • Right-click my testinggridlayout project and click properties:
  • under Java Build Path - select the Projects tab, then Add.
  • select my project "GridLayout" and click OK, then Ok.

At this point

If I go into the main.xml layout manually insert this code:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<GridLayout
    android:background="#FFFFFF"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:columnCount="8"
    android:rowCount="5" >

</GridLayout>

</LinearLayout>

I get the error:

The following classes could not be found: - GridLayout (fix build path, edit XML).

If I change

<GridLayout> & </GridLayout>
to
<android.support.v7.widget.GridLayout> & </android.support.v7.widget.Gridlayout>

I receive the same error:

The following classes could not be found: - android.support.v7.widget.GridLayout (fix build path, edit XML).

At that point I created a folder in my project called "libs".

I then copied the android-support-v7-GridLayout.jar file under libs in the GridLayout project to this folder.

I right clicked this file in my "libs" folder in "testinggridlayout" and selected "Add to Build Path".

My error then changed to:

The following classes could not be instantiated: - android.support.v7.widget.GridLayout (open class, show error log)

Which bit(s) have I missed out/ shouldn't have done?

like image 843
Kyohei Kaneko Avatar asked Apr 12 '12 23:04

Kyohei Kaneko


3 Answers

I use intellij idea, so it's not exactly your case, but maybe it will be helpfull. I struggled with setting this up whole day, then it suddenly worked. I'll describe my setup so you can compare:

  1. setup the GridLayout project as library project. Example of setting up can be found at android developer site here
  2. setup your main project as usual, reference the library project as described in the link above.
  3. add libraries to your main project. I used latest android-support-v13.jar and android-support-v7-gridlayout.jar. NOTE: I used the v7 support library in the main project, not the library project. In fact, checking it now - in library project I don't reference the v7 support.
  4. Use full package name in the layout file: <android.support.v7.widget.GridLayout /> instead of <GridLayout />
  5. use custom namespace, something like this: xmlns:grid="http://schemas.android.com/apk/res-auto" in your layout file to use custom attributes defined in the library project in your tag, like grid:columnCount

hope this helps. I'm currently trying it, not even sure it is something I need :)

like image 108
khusrav Avatar answered Nov 03 '22 18:11

khusrav


If someone is having same problem here's a solution that worked for me:

After importing project into a workspace you need to add it as a dependency using Android tab and not Java Build Path

Project -> Properties -> Android -> Library -> [Add...]

I also ticked Is Library.

like image 10
Mahakala Avatar answered Nov 03 '22 18:11

Mahakala


Copy android-support-v7-gridlayout.jar from the folder Android_SDK_folder\extras\android\support\v7\gridlayout\libs. Then, paste it in your project MyAndroidProject\libs folder.

like image 5
Sridhar Nalam Avatar answered Nov 03 '22 18:11

Sridhar Nalam