我为我的Android项目实现了一个.aar库,它提供了一些动画的速度指示器等等。该库名为“SpeedometerView-1.0.1.aar”
一切运作良好,并且完成了它的工作。但是,我正在尝试为我的速度表实施标签。我使用了为此库找到的文档。这里有一个基本的例子:
https://github.com/ntoskrnl/AndroidWidgets
以下是教程示例中的代码:
用法
将库导入您的项目。
在你的布局xml文件中添加SpeedometerGauge,如下所示:
<com.cardiomood.android.controls.gauge.SpeedometerGauge
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:padding="8dp"
android:id="@+id/speedometer" />
配置SpeedometerGauge:
private SpeedometerGauge speedometer;
// Customize SpeedometerGauge
speedometer = (SpeedometerGauge) v.findViewById(R.id.speedometer);
// Add label converter
speedometer.setLabelConverter(new SpeedometerView.LabelConverter() {
@Override
public String getLabelFor(double progress, double maxProgress) {
return String.valueOf((int) Math.round(progress));
}
});
// configure value range and ticks
speedometer.setMaxSpeed(300);
speedometer.setMajorTickStep(30);
speedometer.setMinorTicks(2);
// Configure value range colors
speedometer.addColoredRange(30, 140, Color.GREEN);
speedometer.addColoredRange(140, 180, Color.YELLOW);
speedometer.addColoredRange(180, 400, Color.RED);
我的问题在于“添加标签转换器”。
当我尝试在我的代码中使用它时,我收到此错误:
setLabelConverter (com.cardiomood.android.controls.gauge.SpeedometerGauge.LabelConverter) 在SpeedometerGauge中无法应用(匿名 com.cardiomood.android.speedometer.SpeedometerView.LabelConverter)
以下是我的相关代码的样子:
private void setCoolingIndicatorAttributes() {
coolingIndicator.setMaxSpeed(250);
coolingIndicator.setMajorTickStep(50);
coolingIndicator.setMinorTicks(3);
coolingIndicator.addColoredRange(0, 140, Color.GREEN);
coolingIndicator.addColoredRange(140, 200, Color.YELLOW);
coolingIndicator.addColoredRange(200, 250, Color.RED);
// Add label converter
coolingIndicator.setLabelConverter(new SpeedometerView.LabelConverter() {
@Override
public String getLabelFor(double progress, double maxProgress) {
return String.valueOf((int) Math.round(progress));
}
});
}
同样,这^^^不起作用。我得到了我描述的错误:
setLabelConverter (com.cardiomood.android.controls.gauge.SpeedometerGauge.LabelConverter) 在SpeedometerGauge中无法应用(匿名 com.cardiomood.android.speedometer.SpeedometerView.LabelConverter)
正如您所看到的,唯一的区别是包名和类前面的“匿名”这个词。
我尝试了很多方法来解决这个问题,但没有成功。必须有一些非常简单的方法来解决这个问题,由于某种原因让我逃避。我很感激任何意见。
谢谢!
编辑:我想我已经解决了这个问题:我想我设法解决了这个问题:名称应该是SpeedometerGauge,而不是SpeedometerView。
所以正确的代码是:
// Add label converter
coolingIndicator.setLabelConverter(new SpeedometerGauge.LabelConverter() {
@Override
public String getLabelFor(double progress, double maxProgress) {
return String.valueOf((int) Math.round(progress));
}
});
}
答案 0 :(得分:2)
您似乎正在实例化 SpeedometerGauge 而不是 SpeedometerView ,因此您应该更换
speedometer.setLabelConverter(new SpeedometerView.LabelConverter() {
通过
speedometer.setLabelConverter(new SpeedometerGauge.LabelConverter() {