X和Y轴标签不显示使用Android小部件

我想使用androidplot来显示一个android小部件内的情节。 实际上,小部件的主要内容应该是显示情节。 我的问题是我根本看不到x和y标签。 (虽然我可以设置和看到整体范围的标签,如“温度°C”)。

这里是相关的代码部分(实际上在Kotlin中,而不是在Java中):

val plot = XYPlot(context, "Historyplot") plot.setRangeLabel("Temp. in Grad") plot.setDomainLabel("Zeit") plot.title.labelPaint.textSize = 20f plot.rangeTitle.labelPaint.textSize = 20f plot.domainTitle.labelPaint.textSize = 20f plot.legend.isVisible = false plot.setBackgroundColor(Color.TRANSPARENT) val h = appWidgetManager.getAppWidgetOptions(appWidgetId).getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT) val w = appWidgetManager.getAppWidgetOptions(appWidgetId).getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH) plot.setPlotMargins(10f, 10f, 10f, 10f) plot.layout(0, 0, w, h) val history = mutableListOf() for (dataPoint in sensorHist) { history.add(dataPoint.value ?: Double.NaN) } val series = SimpleXYSeries(history, SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "") val seriesFormat = LineAndPointFormatter(Color.BLACK, Color.BLACK, Color.LTGRAY, null) plot.addSeries(series, seriesFormat) val bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888) plot.draw(Canvas(bitmap)) views.setImageViewBitmap(R.id.plot_widget_img, bitmap) appWidgetManager.updateAppWidget(appWidgetId, views) 

这就是它当前的样子(包括窗口小部件左上角和右上角的其他两个控件元素): 小部件截图

我已经尝试了许多不同的东西,使tic标签可见,但没有一个工作( setRangeOriginLinePaint(Color.BLACK), series.useImplicitXVals(), setLineLabelEdges(), setRangeStep(), setDomainStep(), setLinesPerRangeLabel() 。 ..)

难道是x-任何y-tics都不能在android widget中工作吗? 还是我错过了什么?

更新

谢谢,@尼克,我已经添加了该行

 plot.graph().setLineLabelEdges(XYGraphWidget.Edge.LEFT, XYGraphWidget.Edge.BOTTOM) 

这就是它的样子(我已经添加了红色箭头作为视觉指南):

一些标签可见

在正确方向迈出的一步! 我怎样才能操纵字体风格,更重要的是,整个标签都是可见的? 我试过plot.layoutManager.addToTop()但只能findx和y的标题,而不是标签本身。

我能够通过添加以下代码来获取标签以显示在DemoApp的(非常过时的)小部件示例中:

 plot.getGraph().setLineLabelEdges(XYGraphWidget.Edge.LEFT, XYGraphWidget.Edge.BOTTOM); 

这不是很漂亮,但是这是一个开始:

在这里输入图像说明

我看你已经试过了,但据我所知,这就是你所缺少的一切。

回应您的更新

您可以像这样调整标签的位置和颜色:

 plot.getGraph().setLineLabelEdges(XYGraphWidget.Edge.LEFT, XYGraphWidget.Edge.BOTTOM); plot.getGraph().getLineLabelInsets().setLeft(PixelUtils.dpToPix(16)); plot.getGraph().getLineLabelInsets().setBottom(PixelUtils.dpToPix(4)); plot.getGraph().getLineLabelStyle(XYGraphWidget.Edge.LEFT).getPaint().setColor(Color.RED); 

生产:

在这里输入图像说明

之后它是一个调整绘图/图表边距等问题

Interesting Posts