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

问题描述 投票:2回答:1

我想用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小部件中工作?或者我错过了什么?

更新

谢谢,@尼克,我添加了这条线

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

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

在正确方向迈出的一步!我现在如何操纵字体样式,更重要的是,整个标签是可见的?我尝试过plot.layoutManager.addToTop(),但只能找到x和y的标题,而不是标签本身。

androidplot
1个回答
2
投票

通过添加以下内容,我能够在DemoApp(非常过时)的小部件示例中显示标签:

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

它不漂亮,但它是一个开始:

enter image description here

我看到你已经尝试过了,但据我所知,这就是你所遗漏的一切。

对您的更新的回应

您可以调整标签的位置和颜色,如下所示:

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);

生产:

enter image description here

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

© www.soinside.com 2019 - 2024. All rights reserved.