Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MPAndroidChart分组条形图:组标题未显示在组上方_Java_Android_Mpandroidchart - Fatal编程技术网

Java MPAndroidChart分组条形图:组标题未显示在组上方

Java MPAndroidChart分组条形图:组标题未显示在组上方,java,android,mpandroidchart,Java,Android,Mpandroidchart,我有一个条形图,其中有4个条形图,使用。 到目前为止,这是可行的。现在我想在每组上方显示一个标题。这是我当前的输出(如您所见,标题没有显示在每个组的上方) 我的代码: _overviewBarChart.setPinchZoom(false); _overviewBarChart.getDescription().setEnabled(false); _overviewBarChart.setDrawValueAboveBar(true); _overviewBa

我有一个条形图,其中有4个条形图,使用。 到目前为止,这是可行的。现在我想在每组上方显示一个标题。这是我当前的输出(如您所见,标题没有显示在每个组的上方)

我的代码:

   _overviewBarChart.setPinchZoom(false);
    _overviewBarChart.getDescription().setEnabled(false);
    _overviewBarChart.setDrawValueAboveBar(true);
    _overviewBarChart.getXAxis().setCenterAxisLabels(true);
    _overviewBarChart.getXAxis().setAxisMinimum(0);
    _overviewBarChart.getXAxis().setDrawGridLines(false);

private void updateOverviewBarChart() {

    //Init calorie needs bars

    BarEntry todayCalorieNeedsBarEntry = new BarEntry(0, _calorieEntry.getTarget());
    BarEntry yesterdayCalorieNeedsBarEntry = new BarEntry(0, 0);
    if (_yesterdayCalorieEntry != null)
        yesterdayCalorieNeedsBarEntry = new BarEntry(0, _yesterdayCalorieEntry.getTarget());

    ArrayList<BarEntry> calorieNeedsBarEntries = new ArrayList<>();
    calorieNeedsBarEntries.add(todayCalorieNeedsBarEntry);
    calorieNeedsBarEntries.add(yesterdayCalorieNeedsBarEntry);

    //Init consumed calories bars

    BarEntry todayConsumedCaloriesBarEntry = new BarEntry(1, _calorieEntry.getConsumed());
    BarEntry yesterdayConsumedCaloriesBarEntry = new BarEntry(1, 0);
    if (_yesterdayCalorieEntry != null)
        yesterdayConsumedCaloriesBarEntry = new BarEntry(1, _yesterdayCalorieEntry.getConsumed());

    ArrayList<BarEntry> consumedCaloriesBarEntries = new ArrayList<>();
    consumedCaloriesBarEntries.add(todayConsumedCaloriesBarEntry);
    consumedCaloriesBarEntries.add(yesterdayConsumedCaloriesBarEntry);

    //Init BarDataSets

    BarDataSet calorieNeedsBarDataSet = new BarDataSet(calorieNeedsBarEntries, getString(R.string.fragment_main_calorieneeds));
    calorieNeedsBarDataSet.setColor(Color.parseColor("#26A69A"));
    BarDataSet consumedCaloriesBarDataSet = new BarDataSet(consumedCaloriesBarEntries, getString(R.string.fragment_main_consumed));
    consumedCaloriesBarDataSet.setColor(Color.parseColor("#E53935"));

    //Init BarData, group BarEntrys, set group titles

    BarData barData = new BarData(calorieNeedsBarDataSet, consumedCaloriesBarDataSet);
    barData.setValueTextSize(14);
    barData.setBarWidth(0.2f);
    barData.groupBars(0, 0.15f, 0.1f);

    ArrayList<String> groupTitles = new ArrayList<String>();
    groupTitles.add(getString(R.string.fragment_main_today));
    groupTitles.add(getString(R.string.fragment_main_yesterday));

    _overviewBarChart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(groupTitles));// new BarChartStringFormatter(groupTitles));

    //Set data, redraw BarChart

    _overviewBarChart.setData(barData);
    _overviewBarChart.invalidate();
}
\u概览条形图。设置PinchZoom(假);
_overviewBarChart.getDescription().setEnabled(false);
_概览条形图。设置条形图上方的DrawValues(true);
_overviewBarChart.getXAxis().setCenterAxisLabels(true);
_概述Barchart.getXAxis().SetAxismimum(0);
_overviewBarChart.getXAxis().setDrawGridLines(false);
私有void updateOverviewBarChart(){
//初始卡路里需要棒
BarEntry today卡路里eneedsbarentry=新的BarEntry(0,_calorienetry.getTarget());
BarEntry YesterdayCareneedsBarentry=新BarEntry(0,0);
如果(_YesterdayCalorientry!=null)
YesterdayCalorienedSBarentry=新的BarEntry(0,_YesterdayCalorienentry.getTarget());
ArrayList CarolineedsBarentries=新ArrayList();
添加(今天的卡路里含量);
加上(昨天的热量);
//初始消耗热量棒
BarEntry Today ConsumedCaloriesBarentry=新的BarEntry(1,_calorientry.getConsumed());
BarEntry Yesterday ConsumedCaloriesBarentry=新BarEntry(1,0);
如果(_YesterdayCalorientry!=null)
yesterdayConsumedCaloriesBarEntry=新的BarEntry(1,_yesterdayCalorieEntry.getConsumed());
ArrayList consumedCaloriesBarEntries=新建ArrayList();
添加(今天的ConsumedCaloriesBarentry);
添加(昨天的ConsumedCaloriesBarentry);
//初始化数据集
BarDataSet-CarrienedSBardataSet=新的BarDataSet(CarrienedSBarentries,getString(R.string.fragment_-main_-CarrienedES));
卡路里数据集.setColor(Color.parseColor(“#26A69A”);
BarDataSet consumedCaloriesBarDataSet=新的BarDataSet(consumedCaloriesBarEntries,getString(R.string.fragment_main_consumed));
consumedCaloriesBarDataSet.setColor(Color.parseColor(“#E53935”);
//Init BarData,组Barentry,设置组标题
BarData BarData=新的BarData(卡路里巴德数据集、消耗热量巴德数据集);
barData.setValueTextSize(14);
立根宽度(0.2f);
barData.groupBars(0,0.15f,0.1f);
ArrayList groupTitles=新的ArrayList();
添加(getString(R.string.fragment_main_today));
add(getString(R.string.fragment_main_昨日));
_概述Barchart.getXAxis().setValueFormatter(新的IndexaxiValueFormatter(groupTitles));//新的BarChartStringFormatter(groupTitles));
//设置数据,重新绘制条形图
_概述Barchart.setData(barData);
_overviewBarChart.invalidate();
}

你能看出我做错了什么吗?

我终于找到了解决问题的办法

首先,您必须添加这两行代码(注意:参数可以根据您的需求而变化):

我的错误是默认的XAxis是细粒化的(0.1、0.2、0.3…)。因此IndexAxisValueFormatter将组标题应用于每个XAxis步骤。setGranularity解决了这个问题。最后,setAxisMaximum用于限制XAxis上的步数(之前的是3步,所以标题显示了3次)

然后改变

barData.groupBars(0, 0.15f, 0.1f);
为此(注意:参数可根据您的要求而变化)

结果:

barData.groupBars(0, 0.15f, 0.1f);
barData.groupBars(0, 0.45f, 0.1f);