【发布时间】:2015-11-21 22:06:34
【问题描述】:
AndroidPlot XYPlot 不会在 xml 预览中呈现。我正在使用 AndroidPlot 0.6.1。我的 libs 文件夹中有 jar。我将它作为 Gradle 脚本中的依赖项。此外,我能够编译、运行应用程序并查看图表。
虽然必须运行应用程序才能看到简单的视觉变化,但这是相当乏味的。我观看了 Maven 快速入门视频,我看到创建者 Nick Fellows 能够看到预览。
这是预览中的堆栈跟踪:
java.lang.AssertionError
at android.content.res.BridgeResources.getDimension(BridgeResources.java:345)
at com.androidplot.util.Configurator.parseFloatAttr(Configurator.java:145)
at com.androidplot.util.Configurator.inflateParams(Configurator.java:236)
at com.androidplot.util.Configurator.configure(Configurator.java:322)
at com.androidplot.util.Configurator.configure(Configurator.java:286)
at com.androidplot.Plot.loadAttrs(Plot.java:371)
at com.androidplot.Plot.init(Plot.java:316)
at com.androidplot.Plot.<init>(Plot.java:249)
at com.androidplot.xy.XYPlot.<init>(XYPlot.java:150)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:413)
at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:105)
at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:177)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:214)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:142)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:806)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:782)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:413)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:321)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:497)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:485)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:894)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:485)
at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:590)
at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$6.run(AndroidDesignerEditorPanel.java:480)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:351)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
我注意到,每当我删除自定义 xml 属性(如下)时,我都可以预览图表。不过,这意味着我无法通过预览按我想要的方式设置图表样式。
androidPlot.titleWidget.labelPaint.textSize="@dimen/title_font_size"
androidPlot.graphWidget.rangeLabelPaint.textSize="@dimen/range_tick_label_font_size"
androidPlot.legendWidget.textPaint.textSize="@dimen/legend_text_font_size"
经过进一步研究,我还注意到只有当 xml 属性设置为等于某些其他资源时才会发生这种情况,例如="@dimen/title_font_size" 或 ...title="@string/test_string"。如果它是 ="15sp" 和 "test",则预览效果很好。预览适用于硬编码项目。如何通过资源参数预览它?
【问题讨论】:
标签: java android xml androidplot