2014-11-06 4 views
0

У меня есть круговая диаграмма, использующая AChartEngine, что я очень доволен. Я выбрал стиль без легенды и этикетки (текст, подключенный к его соответствующему Pie клина с небольшим линии), отформатированный как «точка Пример данных - 25%»Как я могу использовать многострочную метку в PieChart в AChartEngine?

я получаю эту строку ярлыка через:

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

Но часто это имя слишком длинное, поэтому значение не отображается. Я получил "...". Поскольку значение важно, я хочу разместить его на новой строке, чтобы он всегда показывался.

Я изображая этикетки, которые выглядят что-то вроде:

Краткое наименование
10%

слишком долго A Na ...
25%

Также отлично:

Слишком длинный A Имя
25%

Или:

слишком долго A
Name - 25%

Если бы я мог переносить длинные имена новых линий, которые были бы еще лучше! Но я действительно в основном озабочен получением значения , чтобы всегда показывать.

Я попытался добавить новую строку с \ n или System.getProperty ("line.separator"), но PieChart по-прежнему отображает метку как одну строку. \ N не отображается в виде текста, это похоже на то, что он даже не существует. Согласно другим Вопросам, это предположительно работает на других типах диаграмм, но никто не утверждает, что он работает на Pies, что, по-видимому, не основано на моих усилиях.

Я также играл с другими вариантами рендеринга, встроенными в AChartEngine. Например, «setDisplayValues ​​(true)», который ставит значения прямо над клиньями пирога. Мне не нравится, как это выглядит, так как мой пирог имеет несколько крошечных клиньев, поэтому значения оказываются поверх друг друга.

Любое понимание того, как я могу сделать ярлыки на многострочной линии AChartEngine PieChart (или любым другим способом заставить отображаемое значение), будет очень признателен! Большое вам спасибо всем, кто может помочь!

ответ

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(), так как это в фрагменте.

Cheers.

+0

очень хорошая работа вокруг ... Спасибо, что поделились ею. –

+0

@BugsHappen Спасибо. Хотя в качестве хэдз-ап я планирую, что, вероятно, перейду из AChartEngine в Google Chart (https://developers.google.com/chart/). Я не стал говорить, если кто-то эмпирически лучше другого. –

+0

, но вы не можете использовать Google Charts в автономном режиме, не так ли? –

Смежные вопросы