使用 android 小部件未显示 X 和 Y 轴标签

X and Y axis labels are not shown using android widget

我想使用 androidplot 在 android 小部件内显示绘图。实际上,小部件的主要内容应该显示情节。我的问题是我根本看不到 x- 和 y- tic-labels。 (不过,我可以设置并查看总体范围标签,例如 "temperature in °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<Double>()

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-labels 可见,但其中 none 有效(setRangeOriginLinePaint(Color.BLACK), series.useImplicitXVals(), setLineLabelEdges(), setRangeStep(), setDomainStep(), setLinesPerRangeLabel(),...)

难道 x-any y-tics 在 android 小部件中不起作用?还是我遗漏了什么?

更新

谢谢,@Nick,我添加了行

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

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

朝正确方向迈出的一步!我现在如何操作字体样式,更重要的是,如何使整个标签可见?我试过 plot.layoutManager.addToTop() 但只能找到 x 和 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);

产生:

之后是调整绘图/图形边距等的问题。