2017-07-13 6 views
0

まず、貧しい人々の英語について謝るべきです。MPChart Android Lable

いくつかのデータを横棒グラフで表示するコードを書いています。そのために、私はMPChartライブラリVersion 3を使っていますが、そのバーの左側にすべてのバー名を表示したいと思います。

問題は、私が書いたコードでは、名前が正しく配置されていないことです。 (私は各バーの名前をそのバーの前に正確に表示したいが、写真で見ることができるように、ラベルはその場所にはなく、ラベル「アイテム1」も繰り返されているその理由)

ここではコードです:ここでは

public class HorizontalBarchartActivity extends Activity implements OnChartValueSelectedListener { 

protected HorizontalBarChart mChart; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    setContentView(R.layout.activity_main); 

    mChart = (HorizontalBarChart) findViewById(R.id.chart); 
    mChart.setOnChartValueSelectedListener(this); 
    mChart.setDrawBarShadow(false); 
    mChart.setDrawValueAboveBar(true); 
    mChart.getDescription().setEnabled(false); 
    mChart.setMaxVisibleValueCount(60); 
    mChart.setPinchZoom(false); 
    mChart.getLegend().setEnabled(false); 

    BarData data = new BarData(); 

    for (int i = 1; i <= 12; i++) { 
     List<BarEntry> entries = new ArrayList<>(); 
     entries.add(new BarEntry(i - 1, i * 10)); 

     BarDataSet dataSet = new BarDataSet(entries, "Item" + i); 
     dataSet.setColor(generateRadomColor()); 
     data.addDataSet(dataSet); 
    } 

    String[] labels = new String[12]; 

    for (int i = 0; i < 12; i++) { 
     labels[i] = "Item " + (i + 1); 
    } 

    XAxis xAxis = mChart.getXAxis(); 
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); 
    xAxis.setTextSize(10f); 
    xAxis.setTextColor(Color.BLACK); 
    xAxis.setDrawAxisLine(true); 
    xAxis.setDrawGridLines(true); 
    xAxis.setLabelCount(12, true); 
    xAxis.setValueFormatter(new LabelFormatter(labels)); 


    mChart.setData(data); 
    mChart.setFitBars(true); 
    mChart.animateY(2500); 
    mChart.invalidate(); 

} 

private int generateRadomColor() { 
    // Generate the random integers for r, g and b value 
    Random rand = new Random(); 
    int r = rand.nextInt(255); 
    int g = rand.nextInt(255); 
    int b = rand.nextInt(255); 
    return Color.rgb(r, g, b); 
} 

protected RectF mOnValueSelectedRectF = new RectF(); 

@SuppressLint("NewApi") 
@Override 
public void onValueSelected(Entry e, Highlight h) { 

    if (e == null) 
     return; 

    RectF bounds = mOnValueSelectedRectF; 
    mChart.getBarBounds((BarEntry) e, bounds); 

    MPPointF position = mChart.getPosition(e, mChart.getData().getDataSetByIndex(h.getDataSetIndex()) 
      .getAxisDependency()); 

    Log.i("bounds", bounds.toString()); 
    Log.i("position", position.toString()); 

    Toast.makeText(this, e.getY() + "", Toast.LENGTH_LONG).show(); 
    MPPointF.recycleInstance(position); 
} 

@Override 
public void onNothingSelected() { 
} 

private class LabelFormatter implements IAxisValueFormatter { 
    private final String[] mLabels; 

    LabelFormatter(String[] labels) { 
     mLabels = labels; 
    } 

    @Override 
    public String getFormattedValue(float value, AxisBase axis) { 
     if (mLabels != null && mLabels.length > (int) value) { 
      return mLabels[(int) value]; 
     } else return ""; 
    } 
} 

は結果である: enter image description here

誰も私を助けてくださいことはできますか?私はしばらく前にそのライブラリを使用し、あなたの注意

+0

助け、あなたは私のrepoをrevsiarでき

 XAxis xAxis = bchSale.getXAxis(); xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); xAxis.setDrawGridLines(false); xAxis.setGranularity(1f); // only intervals of 1 day //xAxis.setLabelCount(4); xAxis.setDrawAxisLine(true); xAxis.setValueFormatter(new IAxisValueFormatter() { @Override public String getFormattedValue(float value, AxisBase axis) { return "Your String"; } }); 

を試みることができますxAxis.setLabelCount(12、true)を使用しているかもしれません。 12を11と置き換えてください。 – yash786

+0

ご意見ありがとうございます。しかし、商品数は12で、ラベルも12です。 – TTS

答えて

0

を事前に おかげで、私はそれについて何かを変更したい覚えて、あなたは多分あなた

関連する問題