我是非常新的android开发人员,特别是图形。现在,我正在使用AchartEngine库创建以下图形,但我有以下问题:
Q-1.我想用固定宽度显示左边的标签,用省略号显示剩余的内容。
Q-2当我要改变方向从纵向到景观,图形是显示像下面的第二个图像。如何为图形设置最佳布局?
Q-3如何在X轴上设置0 1 2 3.10?
我为这个图表编写了以下代码:
createLayoutMethod():
用于创建图形布局的/** /
@SuppressWarnings("deprecation")
private void createGraphLayout() {
// TODO Auto-generated method stub
/** Initialixation for Graph */
/** objext of dataset which is put on Graph*/
dataset = new XYMultipleSeriesDataset();
series = new CategorySeries("Number of Customer");
renderer = new XYSeriesRenderer();
//renderer.setColor(Color.rgb(0, 168, 240));
mRenderer = new XYMultipleSeriesRenderer();
/** Setting for Renderer **/
mRenderer.setLabelsColor(Color.BLACK);
mRenderer.setBackgroundColor(Color.WHITE);
mRenderer.setOrientation(Orientation.VERTICAL);
mRenderer.setClickEnabled(true);
mRenderer.setLegendTextSize(15);
mRenderer.setLabelsTextSize(13);
mRenderer.setApplyBackgroundColor(true);
mRenderer.setMargins(new int[] {10,10,200,10});
mRenderer.setMarginsColor(Color.WHITE);
mRenderer.setInScroll(true);
mRenderer.setPanEnabled(true, false);
mRenderer.setScale(1);
mRenderer.setXLabelsAlign(Align.RIGHT); // alignment of label x
mRenderer.setXAxisMax(offer.length());
mRenderer.setYLabelsAlign(Align.CENTER); // alignment of label y
mRenderer.setXLabelsColor(Color.BLACK); // color of label x
mRenderer.setYLabelsColor(0, Color.BLACK); // color of label y
mRenderer.setLegendHeight(60);
mRenderer.setDisplayChartValues(true);
mRenderer.setYAxisMax(offer.length());
mRenderer.addSeriesRenderer(renderer);
}放在图上的JSON数据的putDataOnGraph()::
private void putDataOnGraph() {
// TODO Auto-generated method stub
try {
for(int forOffer = 0; forOffer < offer.length(); forOffer++)
{
no_cust = 0;
for(int forCust = 0; forCust < customer.length(); forCust++)
{
if(offer.getJSONObject(forOffer).getInt("id") == customer.getJSONObject(forCust).getInt("offerId") && customer.getJSONObject(forCust).getInt("status") == 1)
no_cust = no_cust+1;
}
/** Check for x-axis maximum than customer **/
maxX = no_cust > maxX ? no_cust : maxX;
mRenderer.setXLabels(0);
mRenderer.addXTextLabel(forOffer+1,offer.getJSONObject(forOffer).getString("offerTitle"));
//Log.d("msg", ""+offer.getJSONObject(forOffer).getString("offerTitle") +" : "+no_cust);
//Log.d("msg", ""+maxX);
series.add(no_cust);
}
mRenderer.setYAxisMax(maxX);
dataset.addSeries(series.toXYSeries());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}图形图像(肖像):

图形图像(景观):

你的帮助将不胜感激。
预先谢谢.
发布于 2013-03-26 08:05:31
对于Q1,您将不得不计算标签宽度(以像素为单位),并将其添加到所需宽度的大小。AChartEngine不是为你这么做的。
发布于 2013-03-26 10:08:28
/** For creating lable, display 10 char if length is > 10 **/
// getting String from JSON
lable = offer.getJSONObject(forOffer).getString("offerTitle");
//if string length is grater than 10 then display only first 10 char
if(lable.length() > 10)
{
lable = lable.substring(0, 9);
}
mRenderer.addXTextLabel(forOffer+1,lable);当用户单击时,我已经在Toast中显示了全文。
https://stackoverflow.com/questions/15492702
复制相似问题