我想使用androidplot在android小部件中显示一个情节。实际上,小部件的主要内容应该是显示情节。我的问题是我根本看不到x和y-tic标签。 (我可以设置并查看整个范围标签,例如“温度单位为°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标签可见,但它们都没有用(setRangeOriginLinePaint(Color.BLACK), series.useImplicitXVals(), setLineLabelEdges(), setRangeStep(), setDomainStep(), setLinesPerRangeLabel()
,...)
可能是x-任何y-tics在Android小部件中不起作用?或者我错过了什么?
更新
谢谢,@ Nick,我添加了一行
plot.graph().setLineLabelEdges(XYGraphWidget.Edge.LEFT, XYGraphWidget.Edge.BOTTOM)
这就是它的样子(我添加了红色箭头作为视觉指南):
朝着正确方向迈出的一步!我现在如何操纵字体样式,更重要的是,整个标签是可见的?我已经尝试了plot.layoutManager.addToTop()
,但只能找到x和y的标题,而不是标签本身。
答案 0 :(得分:2)
通过添加以下内容,我能够在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);
产生
之后需要调整绘图/图形边距等。