如何在AChartEngine的PieChart中使用多行标签?

时间:2014-11-06 12:53:55

标签: android charts newline achartengine pie-chart

我有一张使用AChartEngine的饼图,我很满意。我选择没有Legend和带标签的样式(文本连接到相应的Pie wedge带有一条小线)格式化为“Example Data Point - 25%”

我通过以下方式获取此标签字符串:

mSeries.add(name + " - " + Double.toString(value), value);

但通常名称太长,因此不显示该值。我得到“......”。由于值很重要,我想将它放在一个新行上,以便它始终显示。

我正在想象看起来像这样的标签:

短名称
10%

A Na太长了...
25%

也很好:

A的太长 姓名
25%

或者:

A的太长 名称 - 25%

如果我可以将长名称换成新行,那就更好了!但我真的非常关心让值始终显示

我尝试使用 \ n 或System.getProperty(“line.separator”)添加新行,但PieChart仍然将Label呈现为一行。 \ n没有显示为文本,就像它甚至不存在一样。根据其他问题,这可能适用于其他图表类型,但没有人声称它适用于Pies,它似乎不是基于我的努力。

我还玩过AChartEngine内置的其他渲染选项。例如'setDisplayValues(true)',它将值放在饼图上。我不喜欢它看起来如何,因为我的馅饼有一些微小的楔形,所以这些值会相互重叠。

有关如何在AChartEngine PieChart多行(或任何其他方式强制显示值)上制作标签的任何见解将非常感激!非常感谢能够提供帮助的任何人!

1 个答案:

答案 0 :(得分:1)

这不是我真正想要的,但是几个月过去了,我提出了另一种选择。对于子孙后代,我会把它留在这里作为我自己问题的答案,但不接受它,以防有人在某一天有共享真正的解决方案。

由于我无法找到确保饼图上的标签始终显示百分比值的方法,因此我会在点击楔形时获得Toast信息。这是足够简单的代码:

    private void addPieClickListeners(final GraphicalView mChartView){
    mChartView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint();

            if (seriesSelection == null) {
                // Do Nothing, Possible Toast:
                // Toast.makeText(context,"No chart element was clicked",Toast.LENGTH_SHORT).show();
            }
            else {
                Toast.makeText(context, 
                        Integer.toString((int)Math.round(seriesSelection.getValue())) +
                        "% " + 
                        mSeries.getCategory(seriesSelection.getPointIndex()),
                        Toast.LENGTH_SHORT).show();
            }
        }
    });

我在onCreateView()中调用此方法以及我的其他函数来设置我的饼图,因为它位于片段中。

干杯。