2013년 8월 1일 목요일

GridLayout 사용 하기

이전 블로그에서 이전 함 (원본 글 2013/08/01 작성)

.... 왜케 사용하기 불편하고 맘대로 안돼나..

[GridLayout 소개]

[API reference]

[GridLayout 배치 관련 설명 post들]
 : XML attribute에 대한 설명과 실제 예를 보여주고 있음.

 GridLayout의 행과 열 개수를 지정할 때 하위버전 지원 라이브러이 에서는
app:columnCount  app:rowCount attribute를 이용한다.
(API Level 14에서는 android:ColumnCount, android:rowCount)

또한 이를 위해서 xmlns:app=http://schemas.android.com/apk/res-auto 를 추가해 줘야 한다.
 : android support library 사용 시 필요한 내용에 대해서 설명하고 있음.

 : android support library를 다운 받는 방법에서 부터 사용예까지 상세히 설명하고 있음. 


[기타......]

* project를 참조해서 사용하지 않고 jar만 참조할 경우 layout에서 사용된 gridlayout의 속성 중 column이 없다는 내용이 나오면서 에러 발생

근데 support library를 사용하게 되면 아래와 같은 에러 발생
설정에서 v7 GridLayout 프로젝트 추가하고 library deploy에도 체크를 했는데..
아.. 이유를 모르겠네... 
=> 그냥 귀찮기도 하고 해서 minsdk level 올리고 GridLayout 사용함.. --;

07-30 17:42:38.746: W/dalvikvm(31129): VFY: unable to resolve static field 1022 (default_gap) in Landroid/support/v7/gridlayout/R$dimen;
07-30 17:42:38.746: D/dalvikvm(31129): VFY: replacing opcode 0x60 at 0x0022
07-30 17:42:38.761: I/dalvikvm(31129): DexOpt: unable to optimize static field ref 0x03ff at 0x2a in Landroid/support/v7/widget/GridLayout;.<init>
07-30 17:42:38.761: D/AndroidRuntime(31129): Shutting down VM
07-30 17:42:38.761: W/dalvikvm(31129): threadid=1: thread exiting with uncaught exception (group=0x41475930)
07-30 17:42:38.786: E/AndroidRuntime(31129): FATAL EXCEPTION: main
07-30 17:42:38.786: E/AndroidRuntime(31129): android.view.InflateException: Binary XML file line #1: Error inflating class android.support.v7.widget.GridLayout
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.LayoutInflater.createView(LayoutInflater.java:619)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:693)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.LayoutInflater.inflate(LayoutInflater.java:467)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at com.sec.android.clab.promise.app.BadgeShowcaseTabFragment.onCreateView(BadgeShowcaseTabFragment.java:41)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.support.v4.view.ViewPager.populate(ViewPager.java:1064)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.support.v4.view.ViewPager.populate(ViewPager.java:911)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1432)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.View.measure(View.java:16059)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4923)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.View.measure(View.java:16059)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.View.measure(View.java:16059)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4923)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2414)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.View.measure(View.java:16059)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2133)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1286)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1497)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1183)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4863)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.Choreographer.doCallbacks(Choreographer.java:562)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.Choreographer.doFrame(Choreographer.java:532)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.os.Handler.handleCallback(Handler.java:725)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.os.Handler.dispatchMessage(Handler.java:92)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.os.Looper.loop(Looper.java:137)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.app.ActivityThread.main(ActivityThread.java:5329)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at java.lang.reflect.Method.invokeNative(Native Method)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at java.lang.reflect.Method.invoke(Method.java:511)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at dalvik.system.NativeStart.main(Native Method)
07-30 17:42:38.786: E/AndroidRuntime(31129): Caused by: java.lang.reflect.InvocationTargetException
07-30 17:42:38.786: E/AndroidRuntime(31129):  at java.lang.reflect.Constructor.constructNative(Native Method)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.view.LayoutInflater.createView(LayoutInflater.java:593)
07-30 17:42:38.786: E/AndroidRuntime(31129):  ... 43 more
07-30 17:42:38.786: E/AndroidRuntime(31129): Caused by: java.lang.NoClassDefFoundError: android.support.v7.gridlayout.R$dimen
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.support.v7.widget.GridLayout.<init>(GridLayout.java:255)
07-30 17:42:38.786: E/AndroidRuntime(31129):  at android.support.v7.widget.GridLayout.<init>(GridLayout.java:274)
07-30 17:42:38.786: E/AndroidRuntime(31129):  ... 46 more

댓글 없음:

댓글 쓰기