Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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
Android 使用MarkerView&;的堆叠条形图工具提示;传奇中的问题_Android_Mpandroidchart - Fatal编程技术网

Android 使用MarkerView&;的堆叠条形图工具提示;传奇中的问题

Android 使用MarkerView&;的堆叠条形图工具提示;传奇中的问题,android,mpandroidchart,Android,Mpandroidchart,我想在我的Android应用程序中显示一个带有工具提示功能的堆叠条形图。我使用MarkerView来显示它,但没有成功。下面是示例代码 我还面临着传奇中的问题。。! 由于库不支持文本换行,因此不会显示图例。 Y轴上的值显示为整数。我想在浮动中显示。我可以在Y轴值中指定“%”吗?像这样的, chart1=(条形图)findViewById(R.id.chart1); 图1.SetDrawyValue(真); //图1.设置杆上的DrawValueUpper(真); 图1.设置说明(“”); 图表

我想在我的Android应用程序中显示一个带有工具提示功能的堆叠条形图。我使用MarkerView来显示它,但没有成功。下面是示例代码

我还面临着传奇中的问题。。! 由于库不支持文本换行,因此不会显示图例。 Y轴上的值显示为整数。我想在浮动中显示。我可以在Y轴值中指定“%”吗?像这样的,

chart1=(条形图)findViewById(R.id.chart1);
图1.SetDrawyValue(真);
//图1.设置杆上的DrawValueUpper(真);
图1.设置说明(“”);
图表1.set3DEnabled(假);
图1.设定单位(“%”);
图1.setDrawGridBackground(假);
图1.setDrawHorizontalGrid(真);
图1.setValueTextSize(8f);
图1.setDrawBorder(假);
图1.设定范围(0.0f,100.0f,真);
图1.setDrawLegend(真实);
图1.设置PinchZoom(真);
图1.setTouchEnabled(真);
//条形图上的工具提示代码。
/*MyMarkerView mv=新的MyMarkerView(getApplicationContext(),R.layout.custom\u marker\u视图);
mv.setOffset(-mv.getMeasuredWidth()/2,-mv.getMeasuredHeight());
图1.setMarkerView(mv)*/
XLabels xl=chart1.getXLabels();
xl.setPosition(XLabels.XLabelPosition.BOTTOM);
xl.标签之间的设置空间(10);
xl.setCenterXLabelText(真);
YLabels yl=chart1.getYLabels();
//yl.setLabelCount(10);
yl.设置位置(YLabels.YLabelPosition.左);
setData();
图例l=chart1.getLegend();
l、 设置位置(图例。LegendPosition。图表右下方);
l、 setFormSize(8f);
l、 setYEntrySpace(4f);
图1.animateY(3000);
}
}捕获(JSONException e){
//TODO自动生成的捕捉块
Toast.makeText(getApplicationContext(),“出现错误[服务器的JSON响应可能无效]!”+e.getMessage(),Toast.LENGTH_LONG).show();
e、 printStackTrace();
}
}
私有void setData(){
ArrayList xVals=新的ArrayList();
xVals.添加(“捐赠者”);
xVals.添加(“金额”);
ArrayList yVals1=新的ArrayList();
yVals1.add(new BarEntry(new float[]{donoravg.get(0)、donoravg.get(1)、donoravg.get(2)、donoravg.get(3)、donoravg.get(4)、donoravg.get(5)、donoravg.get(6)、donoravg.get(7)、donoravg.get(8)、donoravg.get(9)、donoravg.get(10)、0));
yVals1.add(new BarEntry(new float[]{amountavg.get(0)、amountavg.get(1)、amountavg.get(2)、amountavg.get(3)、amountavg.get(4)、amountavg.get(5)、amountavg.get(6)、amountavg.get(7)、amountavg.get(8)、amountavg.get(9)、1));
BarDataSet set1=新的BarDataSet(yVals1,“”);
set1.setStackLabels(新字符串[]{“所有其他叛逃者计数”、“去年叛逃者计数”、“有风险的捐赠者计数”});
set1.百分之四十(40华氏度);
set1.setColors(新int[]{R.color.pink_400,R.color.purple_300,R.color.deep_purple_300,R.color.indigo_300,R.color.teal_300,R.color.琥珀色_300,R.color.deep_橙色_300,R.color.brown_300,R.color.blue.blue.blue.grey_300},getApplicationContext());
ArrayList数据集=新的ArrayList();
数据集.add(set1);
BarData数据=新的BarData(xVAL,数据集);
图表1.设置数据(数据);
}

新的mpAndroidChart v2.0.7库解决了所有问题。 使用.setValueFormatter();我们可以格式化Y轴值以及图表值

对于图例问题, 我没有显示图例,而是添加了可以处理堆栈值的Touch Listener。 触摸式监听器可以显示值的详细信息

        chart1 = (BarChart) findViewById(R.id.chart1);
                    chart1.setDrawYValues(true);
                    //chart1.setDrawValueAboveBar(true);
                    chart1.setDescription("");
                    chart1.set3DEnabled(false);
                    chart1.setUnit("%");
                    chart1.setDrawGridBackground(false);
                    chart1.setDrawHorizontalGrid(true);
                    chart1.setValueTextSize(8f);
                    chart1.setDrawBorder(false);
                    chart1.setYRange(0.0f,100.0f,true);
                    chart1.setDrawLegend(true);
                    chart1.setPinchZoom(true);
                    chart1.setTouchEnabled(true);
                    //Code for Tooltip at barchart.
                    /*MyMarkerView mv = new MyMarkerView(getApplicationContext(), R.layout.custom_marker_view);
                    mv.setOffsets(-mv.getMeasuredWidth() / 2, -mv.getMeasuredHeight());
                    chart1.setMarkerView(mv);*/






                    XLabels xl = chart1.getXLabels();
                    xl.setPosition(XLabels.XLabelPosition.BOTTOM);
                    xl.setSpaceBetweenLabels(10);
                    xl.setCenterXLabelText(true);

                    YLabels yl = chart1.getYLabels();
                    //yl.setLabelCount(10);
                    yl.setPosition(YLabels.YLabelPosition.LEFT);


                    setData();

                    Legend l = chart1.getLegend();
                    l.setPosition(Legend.LegendPosition.BELOW_CHART_RIGHT);
                    l.setFormSize(8f);
                    l.setYEntrySpace(4f);

                    chart1.animateY(3000);


                }


            } catch (JSONException e) {
                // TODO Auto-generated catch block
                Toast.makeText(getApplicationContext(), "Error Occurred [Server's JSON response might be invalid]!" + e.getMessage(), Toast.LENGTH_LONG).show();
                e.printStackTrace();

            }

        }

        private void setData() {
            ArrayList<String> xVals = new <String>ArrayList<String>();
            xVals.add("Donors");
            xVals.add("Amount");

            ArrayList<BarEntry> yVals1 = new <BarEntry>ArrayList<BarEntry>();

            yVals1.add(new BarEntry(new float[]{donoravg.get(0),donoravg.get(1),donoravg.get(2),donoravg.get(3),donoravg.get(4),donoravg.get(5),donoravg.get(6),donoravg.get(7),donoravg.get(8),donoravg.get(9),donoravg.get(10)}, 0));
            yVals1.add(new BarEntry(new float[]{amountavg.get(0),amountavg.get(1),amountavg.get(2),amountavg.get(3),amountavg.get(4),amountavg.get(5),amountavg.get(6),amountavg.get(7),amountavg.get(8),amountavg.get(9)}, 1));

            BarDataSet set1 = new BarDataSet(yVals1, "");
            set1.setStackLabels(new String[]{"All other defector count", "Last Year Defector Count", "At Risk Donor Count"});
            set1.setBarSpacePercent(40f);
            set1.setColors(new int[]{R.color.pink_400, R.color.purple_300, R.color.deep_purple_300, R.color.indigo_300, R.color.cyan_300, R.color.teal_300, R.color.amber_300, R.color.deep_orange_300, R.color.brown_300, R.color.blue_grey_300}, getApplicationContext());

            ArrayList<BarDataSet> dataSets = new <BarDataSet>ArrayList<BarDataSet>();
            dataSets.add(set1);
            BarData data = new BarData(xVals, dataSets);
            chart1.setData(data);

        }