Я использую MPAndroidChart library. У кого-нибудь есть эта проблема? Когда я помещаю этикетки в положение BOTTOM, они вырезаются.MPAndroidChart - Обозначения легенды обрезаются
Спасибо
Я использую MPAndroidChart library. У кого-нибудь есть эта проблема? Когда я помещаю этикетки в положение BOTTOM, они вырезаются.MPAndroidChart - Обозначения легенды обрезаются
Спасибо
Они вырезаны, потому что ваш текст слишком длинный и библиотека не поддерживает «обертку» из этикеток на новую строку.
Вам придется либо сократить ярлыки легенды, либо реализовать желаемые функции самостоятельно.
Вы должны реализовать 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));
Надеется, что это поможет вам
Здесь я покажу вам простой способ по «традиционному Android путь», это очень просто, мой код ниже:
<LinearLayout
android:id="@+id/i_am_chart_view_container"
...
android:paddingRight="20dp"
android:clipChildren="false"
android:clipToPadding="false"
.../>
Просто нужно добавить padding
в макет контейнера, или некоторые margin
с точки зрения графика, и, наконец, установить clipChildren
& clipToPadding
ложь.
Результат ниже:
синяя область является заполнение или области полей.
Это, кажется, новый 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;
}
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);
Чтобы избежать вырезку легенды ценности использования следующий блок кода
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;
}
Спасибо, это работает, но первое и последнее значение точки данных тоже обрезаны, любое решение? – erical
@erical Не можете найти скриншот для своей проблемы? –
Комплект поддержки контента обертка только легенды ПОлОжЕНИЕ когда позиция легенда BelowChartLeft, BelowChartRight, BelowChartCenter
Legend legend = pieChart.getLegend();
legend.setPosition(Legend.LegendPosition.BELOW_CHART_LEFT);
legend.setWordWrapEnabled(true);
После этого набора набора данных
pieChart.setData(pieData)
он будет работать нормально
После долгого Я нашел решение. Следующий код решил это.
chart.getLegend(). SetWordWrapEnabled (true);
Благодарим за ответ. – rguerra