안드로이드 개발 질문/답변
(글 수 45,052)
tabHost.addTab(tabHost.newTabSpec(getString(R.string.sort)) .setIndicator(viewByThumb).setContent(All));
addTab로 다음과 같이 지정해 주었습니다.
Tab 배경?을 customizing 해서 쓰려고 layout를 inflater 해서 setIndicator에 넣어서 쓰고 있습니다.
viewByThumb가 현재
viewByThumb = inflater.inflate(R.layout.dummy, getTabWidget(), false);
viewByThumb 을 쓰다가 특정 조건을 만족할때 텝 배경모양을 바꾸기 위해서
다른 View를 배경으로 바꿀때.. 어떻게 바꿔야 하죠?
getTabWidget().getChildAt(ICON_TAP).set..... 들어가야 할꺼 같은데..
.setBackgroundColor(color)
.setBackgroundDrawable(arg0)
.setBackgroundResource(resid)
이런 함수는 있는 어떻게 뭘 써야 할지 모르겠네요..
getTabWidget().getChildAt(ICON_TAP).setBackgroundResource(R.layout.dummy);
이런식으로 .setBackgroundResource(resid) 를 이용해서 Layout를 집어 넣어봤는데...
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): android.content.res.Resources$NotFoundException: File res/layout/dummy.xml from drawable resource ID #0x7f030002
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.content.res.Resources.loadDrawable(Resources.java:1697)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.content.res.Resources.getDrawable(Resources.java:581)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.View.setBackgroundResource(View.java:7393)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at com.sec.android.app.videoplayer.activity.MainTab$10.onTouch(MainTab.java:374)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.View.dispatchTouchEvent(View.java:3762)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:897)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1875)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1159)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1859)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewRoot.handleMessage(ViewRoot.java:1787)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.os.Handler.dispatchMessage(Handler.java:99)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.os.Looper.loop(Looper.java:123)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at java.lang.reflect.Method.invokeNative(Native Method)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at java.lang.reflect.Method.invoke(Method.java:521)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at dalvik.system.NativeStart.main(Native Method)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag LinearLayout
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:783)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.content.res.Resources.loadDrawable(Resources.java:1694)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): ... 23 more
이런 오류만 띄어주네요 ㅠㅠ
고수님들 조언 좀 부탁드립니다.
addTab로 다음과 같이 지정해 주었습니다.
Tab 배경?을 customizing 해서 쓰려고 layout를 inflater 해서 setIndicator에 넣어서 쓰고 있습니다.
viewByThumb가 현재
viewByThumb = inflater.inflate(R.layout.dummy, getTabWidget(), false);
viewByThumb 을 쓰다가 특정 조건을 만족할때 텝 배경모양을 바꾸기 위해서
다른 View를 배경으로 바꿀때.. 어떻게 바꿔야 하죠?
getTabWidget().getChildAt(ICON_TAP).set..... 들어가야 할꺼 같은데..
.setBackgroundColor(color)
.setBackgroundDrawable(arg0)
.setBackgroundResource(resid)
이런 함수는 있는 어떻게 뭘 써야 할지 모르겠네요..
getTabWidget().getChildAt(ICON_TAP).setBackgroundResource(R.layout.dummy);
이런식으로 .setBackgroundResource(resid) 를 이용해서 Layout를 집어 넣어봤는데...
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): android.content.res.Resources$NotFoundException: File res/layout/dummy.xml from drawable resource ID #0x7f030002
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.content.res.Resources.loadDrawable(Resources.java:1697)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.content.res.Resources.getDrawable(Resources.java:581)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.View.setBackgroundResource(View.java:7393)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at com.sec.android.app.videoplayer.activity.MainTab$10.onTouch(MainTab.java:374)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.View.dispatchTouchEvent(View.java:3762)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:897)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1875)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1159)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1859)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.view.ViewRoot.handleMessage(ViewRoot.java:1787)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.os.Handler.dispatchMessage(Handler.java:99)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.os.Looper.loop(Looper.java:123)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at java.lang.reflect.Method.invokeNative(Native Method)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at java.lang.reflect.Method.invoke(Method.java:521)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at dalvik.system.NativeStart.main(Native Method)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag LinearLayout
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:783)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): at android.content.res.Resources.loadDrawable(Resources.java:1694)
02-13 03:24:24.865: ERROR/AndroidRuntime(27068): ... 23 more
이런 오류만 띄어주네요 ㅠㅠ
고수님들 조언 좀 부탁드립니다.
2010.09.06 16:04:36
getTabWidget().getChildAt(ICON_TAP).setBackgroundResource(R.layout.dummy);
에러는 여기서 나는거죠... setBackgroundResource는 Drawable의 Resource id를 넣어줘야 하는데 레이아웃의 id를 줬죠...
나머지는 잘하셨다고 보는데요 이게 문제에요...
에러는 여기서 나는거죠... setBackgroundResource는 Drawable의 Resource id를 넣어줘야 하는데 레이아웃의 id를 줬죠...
나머지는 잘하셨다고 보는데요 이게 문제에요...
2010.09.06 17:59:51
getTabWidget().getChildAt(ICON_TAP) == viewByThumb 입니다.
(ICON_TAP이 인덱스를 똑바로 가지고 있다면...)
자꾸 같은말을 반복하게 되는데요...
정말 마지막에 잘못하신겁니다. .setBackgroundResource(R.layout.dummy);
이렇게 하면 어떤 뷰에도 오류가 날겁니다.
님은 뷰 자체를 잘못쓰신거지 탭이라고 따로 문제가 있던건 아닙니다.
.setBackgroundResource(R.drawable.icon);
이런식으로 쓰면 오류 안날겁니다. layout과 drawable의 차이입니다.
(ICON_TAP이 인덱스를 똑바로 가지고 있다면...)
자꾸 같은말을 반복하게 되는데요...
정말 마지막에 잘못하신겁니다. .setBackgroundResource(R.layout.dummy);
이렇게 하면 어떤 뷰에도 오류가 날겁니다.
님은 뷰 자체를 잘못쓰신거지 탭이라고 따로 문제가 있던건 아닙니다.
.setBackgroundResource(R.drawable.icon);
이런식으로 쓰면 오류 안날겁니다. layout과 drawable의 차이입니다.
2010.09.06 18:34:17
그냥가자님..
View viewByThumb;
setIndicator(viewByThumb)
이런식으로 setIndicator를 지정할때는 View 타입을 넣어줘도 오류가 안나더라구요...
정상 작동하고, 정상적으로 보여지구요..
그런데 제가 하고 싶은건..
처음에 View타입으로 지정해준. setIndicator의 값을 특정 조건일 때, 바꿔주고 싶은 것입니다.
그 방법을 혹시 알고 계신가 해서요...
.setBackgroundResource(R.layout.dummy); 이런식으로 값을 준건 제가 잘못한거 맞구요 ^^;;
.setBackgroundResource의 파라미터값이 drawable의 resid값이 들어가야겠죠 ^^;;
꾸준한 답변 감사합니다.
View viewByThumb;
setIndicator(viewByThumb)
이런식으로 setIndicator를 지정할때는 View 타입을 넣어줘도 오류가 안나더라구요...
정상 작동하고, 정상적으로 보여지구요..
그런데 제가 하고 싶은건..
처음에 View타입으로 지정해준. setIndicator의 값을 특정 조건일 때, 바꿔주고 싶은 것입니다.
그 방법을 혹시 알고 계신가 해서요...
.setBackgroundResource(R.layout.dummy); 이런식으로 값을 준건 제가 잘못한거 맞구요 ^^;;
.setBackgroundResource의 파라미터값이 drawable의 resid값이 들어가야겠죠 ^^;;
꾸준한 답변 감사합니다.
잘하셨는데 마지막에 Layout을 넣어주신게 에러입니다.
Drawable에 해당하는 id를 주셔야 하는데 Layout에 해당하는 id를 주니까 캐스팅이 안되는거죠...