Titanium 안드로이드에서 TableViewRow에 9-patch backgroundImage를 넣으면 배경이 적용되지 않는 문제가 있습니다.
태그 보관물: 9-patch
Titanium android에선 테두리가 검은 이미지를 9-patch로 인식
Titanium의 안드로이드 지원은 꽤나 후진편인데,
검은색 이미지를 사용할 경우 이런 에러가 나오는 것을 볼 수 있다.(2.0.2 GA 기준)
06-07 16:56:04.507: E/TiApplication(2738): (KrollRuntimeThread) [438,440] APP PROXY: ti.modules.titanium.app.AppModule@413ba7f8 06-07 16:56:14.105: E/TiApplication(2738): (main) [1156,8379] Sending event: exception on thread: main msg:java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0; Titanium 2.0.2,2012/05/30 10:21,2ff31a3 06-07 16:56:14.105: E/TiApplication(2738): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 06-07 16:56:14.105: E/TiApplication(2738): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) 06-07 16:56:14.105: E/TiApplication(2738): at java.util.ArrayList.get(ArrayList.java:304) 06-07 16:56:14.105: E/TiApplication(2738): at org.appcelerator.titanium.util.TiNinePatchHelper.createChunk(TiNinePatchHelper.java:189) 06-07 16:56:14.105: E/TiApplication(2738): at org.appcelerator.titanium.util.TiNinePatchHelper.process(TiNinePatchHelper.java:52) 06-07 16:56:14.105: E/TiApplication(2738): at org.appcelerator.titanium.util.TiFileHelper.loadDrawable(TiFileHelper.java:308) 06-07 16:56:14.105: E/TiApplication(2738): at org.appcelerator.titanium.util.TiUIHelper.buildBackgroundDrawable(TiUIHelper.java:493) 06-07 16:56:14.105: E/TiApplication(2738): at org.appcelerator.titanium.view.TiUIView.handleBackgroundImage(TiUIView.java:783) 06-07 16:56:14.105: E/TiApplication(2738): at org.appcelerator.titanium.view.TiUIView.processProperties(TiUIView.java:562) 06-07 16:56:14.105: E/TiApplication(2738): at ti.modules.titanium.ui.widget.TiView.processProperties(TiView.java:39) ...
로컬 이미지 리소스를 불러올때에 9-patch 이미지인지 확인을 하면서
이미지 테두리가 투명과 검은색으로만 이루어져있으면 9-patch로 인식을 하도록 하는 병맛스러운 코드가 있다.
테두리가 모두 투명하면 9-patch로 인식하지 않도록 하는 방어코드(?)가 있으니 피하려면 테두리를 모두 투명하게 하거나 검은색에서 약간 투명한 색을 사용하면 될듯하다;
그런데 애초에 .9.png가 아니면 9-patch로 인식을 할 필요가 있을까?