2015-01-08 4 views

ответ

4

Они вырезаны, потому что ваш текст слишком длинный и библиотека не поддерживает «обертку» из этикеток на новую строку.

Вам придется либо сократить ярлыки легенды, либо реализовать желаемые функции самостоятельно.

+0

Благодарим за ответ. – rguerra

6

Вы должны реализовать CUSTOMIZE легенды с их легендами цветов и Lables на следующие шаги Шаг 1

Легенда Легенда = mChart.getLegend();

Шаг 2

INT colorcodes [] = legend.Colors();

Шаги 3

для (INT I = 0;. I < legend.Colors() длина-1; я ++) { ..... ..... }

Steps 4

Тогда вы должны принять один макет горизонтальной или вертикальной. Вам нужно получить легендарные цветовые коды и легенды, а в соответствии с длиной легенд создайте макет и ярлык. Пример кода приведен ниже

 LinearLayout.LayoutParams parms_left_layout = new LinearLayout.LayoutParams(
       LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
     parms_left_layout.weight = 1F; 
     LinearLayout left_layout = new LinearLayout(context); 
     left_layout.setOrientation(LinearLayout.HORIZONTAL); 
     left_layout.setGravity(Gravity.CENTER); 
     left_layout.setLayoutParams(parms_left_layout); 

     LinearLayout.LayoutParams parms_legen_layout = new LinearLayout.LayoutParams(
       20, 20); 
     parms_legen_layout.setMargins(0, 0, 20, 0); 
     LinearLayout legend_layout = new LinearLayout(context); 
     legend_layout.setLayoutParams(parms_legen_layout); 
     legend_layout.setOrientation(LinearLayout.HORIZONTAL); 
     legend_layout.setBackgroundColor(colorcodes[i]); 
     left_layout.addView(legend_layout); 

     TextView txt_unit = new TextView(context); 
     txt_unit.setText(legend.getLabel(i)); 

Надеется, что это поможет вам

4

Здесь я покажу вам простой способ по «традиционному Android путь», это очень просто, мой код ниже:

<LinearLayout 
    android:id="@+id/i_am_chart_view_container" 
    ... 
    android:paddingRight="20dp" 
    android:clipChildren="false" 
    android:clipToPadding="false" 
    .../> 

Просто нужно добавить padding в макет контейнера, или некоторые margin с точки зрения графика, и, наконец, установить clipChildren & clipToPadding ложь.

Результат ниже:

синяя область является заполнение или области полей.

enter image description here

32

Это, кажется, новый feature с июня (2015):

chart.getLegend().setWordWrapEnabled(true); 

Javadoc:

/** 
* Should the legend word wrap?/this is currently supported only for: 
* BelowChartLeft, BelowChartRight, BelowChartCenter./note that word 
* wrapping a legend takes a toll on performance./you may want to set 
* maxSizePercent when word wrapping, to set the point where the text wraps. 
*/default: false 
* 
* @param enabled 
*/ 
public void setWordWrapEnabled(boolean enabled) { 
    mWordWrapEnabled = enabled; 
} 
+0

Спасибо большое ... Я решил для iOS 'chartView.legend.wordWrapEnabled = true;' – Hiren

+0

Я согласен, работал отлично для меня! – Zhar

+0

отлично! вы сохранили мое время –

2
Legend l = pieChart.getLegend(); 
l.setPosition(LegendPosition.BELOW_CHART_LEFT); 
l.setXEntrySpace(7f); 
l.setYEntrySpace(0f); 
l.setYOffset(0f); 
l.setDirection(LegendDirection.LEFT_TO_RIGHT); 
l.setWordWrapEnabled(true); 
1

Чтобы избежать вырезку легенды ценности использования следующий блок кода

Legend legend=lineChart.getLegend(); 
legend.setWordWrapEnabled(true); 

Doc (для легенды):

/** 
    * Should the legend word wrap?/this is currently supported only for: 
    * BelowChartLeft, BelowChartRight, BelowChartCenter./note that word 
    * wrapping a legend takes a toll on performance./you may want to set 
    * maxSizePercent when word wrapping, to set the point where the text wraps. 
    */default: false 
    * 
    * @param enabled 
    */ 
    public void setWordWrapEnabled(boolean enabled) { 
     mWordWrapEnabled = enabled; 
    } 

Чтобы избежать вырезку х-меток осей использования

XAxis xAxis = lineChart.getXAxis(); 
xAxis.setAvoidFirstLastClipping(true); 

Doc (для й-меток осей):

/** 
    * if set to true, the chart will avoid that the first and last label entry 
    * in the chart "clip" off the edge of the chart or the screen 
    * 
    * @param enabled 
    */ 
    public void setAvoidFirstLastClipping(boolean enabled) { 
     mAvoidFirstLastClipping = enabled; 
    } 
+0

Спасибо, это работает, но первое и последнее значение точки данных тоже обрезаны, любое решение? – erical

+0

@erical Не можете найти скриншот для своей проблемы? –

2

Комплект поддержки контента обертка только легенды ПОлОжЕНИЕ когда позиция легенда BelowChartLeft, BelowChartRight, BelowChartCenter

 Legend legend = pieChart.getLegend(); 
     legend.setPosition(Legend.LegendPosition.BELOW_CHART_LEFT); 
     legend.setWordWrapEnabled(true); 

После этого набора набора данных

pieChart.setData(pieData) 

он будет работать нормально

0

После долгого Я нашел решение. Следующий код решил это.

chart.getLegend(). SetWordWrapEnabled (true);