2012-05-25 143 views
3

我在Android上有9個修補程序的png有奇怪的問題。 無論我使用哪個目標(在7到14之間嘗試過幾個目標),它在Eclipse可視化編輯器中都已失敗。 錯誤日誌顯示消息main.xml中:索引:0,大小:0 例外後面是:9修補程序不能正常工作

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 
at java.util.ArrayList.RangeCheck(ArrayList.java:547) 
at java.util.ArrayList.get(ArrayList.java:322) 
at com.android.ninepatch.NinePatchChunk.draw(NinePatchChunk.java:185) 
at com.android.ninepatch.NinePatchChunk.draw(NinePatchChunk.java:101) 
at android.graphics.NinePatch_Delegate$1.draw(NinePatch_Delegate.java:219) 
at com.android.layoutlib.bridge.impl.GcSnapshot.drawInLayer(GcSnapshot.java:613) 
at com.android.layoutlib.bridge.impl.GcSnapshot.draw(GcSnapshot.java:583) 
at android.graphics.NinePatch_Delegate.draw(NinePatch_Delegate.java:217) 
at android.graphics.NinePatch_Delegate.nativeDraw(NinePatch_Delegate.java:170) 
at android.graphics.NinePatch.nativeDraw(NinePatch.java) 
at android.graphics.NinePatch.draw(NinePatch.java:120) 
at android.graphics.drawable.NinePatchDrawable.draw(NinePatchDrawable.java:189) 
at android.view.View.draw(View.java:10865) 
at android.view.ViewGroup.drawChild(ViewGroup.java:2899) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
at android.view.ViewGroup.drawChild(ViewGroup.java:2897) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
at android.view.ViewGroup.drawChild(ViewGroup.java:2897) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
at android.view.View.draw(View.java:10883) 
at android.view.ViewGroup.drawChild(ViewGroup.java:2899) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
at android.view.ViewGroup.drawChild(ViewGroup.java:2897) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
at android.view.View.draw(View.java:10883) 
at android.view.ViewGroup.drawChild(ViewGroup.java:2899) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
at android.view.View.draw(View.java:10883) 
at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:505) 
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:324) 
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:372) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1323) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1077) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:903) 
at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditor.pageChange(LayoutEditor.java:399) 
at org.eclipse.ui.part.MultiPageEditorPart$2.widgetSelected(MultiPageEditorPart.java:290) 
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240) 
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267) 
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1061) 
at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:2746) 
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1433) 
at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:257) 
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) 
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3588) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3209) 
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701) 
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665) 
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499) 
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679) 
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) 
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123) 
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) 
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) 
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) 
at org.eclipse.equinox.launcher.Main.run(Main.java:1410) 
at org.eclipse.equinox.launcher.Main.main(Main.java:1386) 

9-貼劑與draw9patch-工具創建包含在SDK。 我有這個問題與我在這個項目中使用的所有圖像。我之前已經在其他項目中使用過9補丁,沒有問題,因此我認爲我的當前png格式有一些特定的內容。也許設計師使用的Photoshop會創建png,導致無效的9個補丁。 有沒有人知道這裏有什麼問題?

更新:

工作版本:

enter image description here

不工作的版本:

enter image description here

+1

你可以發佈實際的9補丁嗎? – kcoppock

回答

0

看起來像這裏的問題是: 的不工作的版本惦記一個2像素的透明邊框。然而,仍然奇怪的是,draw9patch沒有抱怨,並表明正在工作。

9

你剛剛錯過了設置的內容區域。

在右邊畫邊界&你的9片png的底部。 enter image description here

+0

根據android文檔,你所說的內容區域是可選的填充框:http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch – iheanyi

+0

是的,這項工作適合我,謝謝。雖然它是可選的,但沒有這個工作,並與此它工作。 +1 – shailesh

2

如果在只有的一個補充9Patch圖像如只在drawable-xhdpi文件夾然後它會重現這樣的錯誤,你應該把它或者只是drawable文件夾或像drawable-hdpi,drawable-mdpi,drawable-xhdpi,drawable-xxhdpi, etc所有文件夾