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有问题。其他人似乎都接受了字体。
答案 0 :(得分:2)
考虑到这仅适用于PieChart
,我想我可以说这是AChartEngine中的一个错误。在可以修复之前,我找到了以下解决方法:
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);
}
}
然后,而不是使用ChartFactory
,而不是像这样手动实例化它:
view = new GraphicalView(context, new CustomPieChart(dataset, renderer));
答案 1 :(得分:2)
这是achartengine-1.1.0.jar
中更新的新功能
的 Change text font by setting a Typeface object
强>
添加了新方法
public void setTextTypeface(android.graphics.Typeface typeface)
// Sets the text typeface.
Parameters:
typeface - the typeface
所以请update你的图书馆并按照代码 -
Typeface myNewFace = Typeface.createFromAsset(getAssets(), "abc.ttf");
renderer.setTextTypeface(myNewFace);
希望这对你有帮助..