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);
生产:
之后它是一个调整绘图/图表边距等问题