Android MPC标签

Android MPC标签,android,bar-chart,Android,Bar Chart,首先,我应该为我糟糕的英语道歉 我已经写了一段代码,在水平条形图中显示一些数据。为此,我使用了android MPChart库版本3。但我想显示每个酒吧的名字,在那个酒吧的左边 问题是,在我编写的代码中,名称的位置不正确。(我想把每个酒吧的名称准确地显示在该酒吧的前面,但正如您在图片中看到的,标签不在其位置,而且标签“项目1”重复出现,我不知道原因是什么) 代码如下: public class HorizontalBarchartActivity extends Activity impleme

首先,我应该为我糟糕的英语道歉

我已经写了一段代码,在水平条形图中显示一些数据。为此,我使用了android MPChart库版本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 "";
    }
}
公共类HorizontalBarchartActivity扩展活动实现OnChartValueSelectedListener{
保护水平条形图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,
WindowManager.LayoutParams.FLAG(全屏);
setContentView(R.layout.activity_main);
mChart=(水平条形图)findViewById(R.id.chart);
mChart.setOnChartValueSelectedListener(此);
mChart.settrabarshadow(假);
mChart.SetDrawValueUpperBar(真实);
mChart.getDescription().setEnabled(false);
mChart.setMaxVisibleValueCount(60);
mChart.setPinchZoom(假);
mChart.getLegend().setEnabled(false);
BarData数据=新的BarData();
对于(int i=1;i(int)值){
返回mLabels[(int)值];
}否则返回“”;
}
}
结果如下:

有人能帮我吗?
提前感谢您的关注

我不久前使用了该库,记得我想修改一下,您可以试试

        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..谢谢您的评论。但是项目数是12,所以标签也是12。