Android AChartEngine Settext字体不工作?

Android AChartEngine Settext字体不工作?,android,achartengine,Android,Achartengine,DefaultRenderer.setTextTypeface(Typeface)似乎不起作用,这是已知的问题吗?在我的应用程序中,我到处都使用相同的字体,所以100%没问题。但如果我将其传递给渲染器,则不会发生任何更改。使用另一个接受标准系统字体的setTextTypeface(),似乎也不起作用 一些源代码,尽管它不简单: DefaultRenderer renderer = new DefaultRenderer(); renderer.setAntialiasing(true); ren

DefaultRenderer.setTextTypeface(Typeface)
似乎不起作用,这是已知的问题吗?在我的应用程序中,我到处都使用相同的字体,所以100%没问题。但如果我将其传递给渲染器,则不会发生任何更改。使用另一个接受标准系统字体的
setTextTypeface()
,似乎也不起作用

一些源代码,尽管它不简单:

DefaultRenderer renderer = new DefaultRenderer();
renderer.setAntialiasing(true);
renderer.setChartTitle(title);
...
renderer.setTextTypeface(MyApplication.getInstance().font.condensedNormal);
renderer.setShowLabels(true);
...
没有错误,没有消息,只是字体没有改变,我收到的系统字体没有问题

版本1.1.0,我能找到的最新版本


附录:经过一些测试,只有PieChart有问题。其他人似乎完全接受这种字体。

考虑到这只适用于
PieChart
,我想我可以说这是AChartEngine中的一个bug。在修复之前,我找到了以下解决方法:

public class CustomPieChart extends org.achartengine.chart.PieChart {
  private static final long serialVersionUID = 1L;

  public CustomPieChart(CategorySeries dataset, DefaultRenderer renderer) {
    super(dataset, renderer);
  }

  @Override
  protected void drawLabel(Canvas canvas, String labelText, DefaultRenderer renderer, List<RectF> prevLabelsBounds, int centerX, int centerY, float shortRadius, float longRadius, float currentAngle, float angle, int left, int right, int color, Paint paint, boolean line, boolean display) {
    paint.setTypeface(...typeface...);
    super.drawLabel(canvas, labelText, renderer, prevLabelsBounds, centerX, centerY, shortRadius, longRadius, currentAngle, angle, left, right, color, paint, line, display);
  }

  @Override
  protected int drawLegend(Canvas canvas, DefaultRenderer renderer, String[] titles, int left, int right, int y, int width, int height, int legendSize, Paint paint, boolean calculate) {
    paint.setTypeface(...typeface...);
    return super.drawLegend(canvas, renderer, titles, left, right, y, width, height, legendSize, paint, calculate);
  }

  @Override
  public void drawTitle(Canvas canvas, int x, int y, int width, Paint paint) {
    paint.setTypeface(...typeface...);
    super.drawTitle(canvas, x, y, width, paint);
  }
}

考虑到这只适用于
PieChart
,我想我可以说这是AChartEngine中的一个bug。在修复之前,我找到了以下解决方法:

public class CustomPieChart extends org.achartengine.chart.PieChart {
  private static final long serialVersionUID = 1L;

  public CustomPieChart(CategorySeries dataset, DefaultRenderer renderer) {
    super(dataset, renderer);
  }

  @Override
  protected void drawLabel(Canvas canvas, String labelText, DefaultRenderer renderer, List<RectF> prevLabelsBounds, int centerX, int centerY, float shortRadius, float longRadius, float currentAngle, float angle, int left, int right, int color, Paint paint, boolean line, boolean display) {
    paint.setTypeface(...typeface...);
    super.drawLabel(canvas, labelText, renderer, prevLabelsBounds, centerX, centerY, shortRadius, longRadius, currentAngle, angle, left, right, color, paint, line, display);
  }

  @Override
  protected int drawLegend(Canvas canvas, DefaultRenderer renderer, String[] titles, int left, int right, int y, int width, int height, int legendSize, Paint paint, boolean calculate) {
    paint.setTypeface(...typeface...);
    return super.drawLegend(canvas, renderer, titles, left, right, y, width, height, legendSize, paint, calculate);
  }

  @Override
  public void drawTitle(Canvas canvas, int x, int y, int width, Paint paint) {
    paint.setTypeface(...typeface...);
    super.drawTitle(canvas, x, y, width, paint);
  }
}

这是在
achartengine-1.1.0.jar中更新的新功能
通过设置字体对象更改文本字体

新方法的加入

public void setTextTypeface(android.graphics.Typeface typeface)
// Sets the text typeface.

Parameters:
typeface - the typeface
因此,请使用您的库并遵循代码-

Typeface myNewFace = Typeface.createFromAsset(getAssets(), "abc.ttf");
renderer.setTextTypeface(myNewFace);

希望这对您有所帮助。

这是在
achartengine-1.1.0.jar中更新的新功能
通过设置字体对象更改文本字体

新方法的加入

public void setTextTypeface(android.graphics.Typeface typeface)
// Sets the text typeface.

Parameters:
typeface - the typeface
因此,请使用您的库并遵循代码-

Typeface myNewFace = Typeface.createFromAsset(getAssets(), "abc.ttf");
renderer.setTextTypeface(myNewFace);
希望这对你有帮助。

那么,我能说些什么呢?:-)首先,您可以从源代码中看到我正在使用此函数。其次,您可以从问题中看到,我正在使用此库版本。第三,您可以从问题中的编辑中看到,一些图表工作正常,只有PieChart有问题…:-)那么,我能说什么呢?:-)首先,您可以从源代码中看到我正在使用此函数。其次,您可以从问题中看到,我正在使用此库版本。第三,您可以从问题中的编辑中看到,一些图表工作正常,只有PieChart有问题…:-)