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 "";
}
}
誰も私を助けてくださいことはできますか?私はしばらく前にそのライブラリを使用し、あなたの注意
助け、あなたは私のrepoをrevsiarでき
を試みることができますxAxis.setLabelCount(12、true)を使用しているかもしれません。 12を11と置き換えてください。 – yash786
ご意見ありがとうございます。しかし、商品数は12で、ラベルも12です。 – TTS