MPAndroidChart - 传奇标签正在被切断

rgu*_*rra 20 android labels mpandroidchart

我正在使用MPAndroidChart库.有人有这个问题吗?当我将标签放在BOTTOM位置时,这些都被切断了.

谢谢

在此输入图像描述

Aks*_*ert 44

这似乎是自2015年6月(2015年)以来的新功能:

chart.getLegend().setWordWrapEnabled(true);
Run Code Online (Sandbox Code Playgroud)

的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;
}
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢...我已经解决了 iOS `chartView.legend.wordWrapEnabled = true;` (2认同)

Phi*_*oda 15

它们被剪切是因为文本太长而且库不支持将标签"包装"到新行.

您将需要缩短图例标签或自行实现所需的功能.

更新:

包装的词 Legend现在支持.

chart.getLegend().setWordWrapEnabled(true);
Run Code Online (Sandbox Code Playgroud)


Ama*_*ila 7

您必须按照步骤1执行自定义图例及其图例颜色和标签

Legend legend = mChart.getLegend();
Run Code Online (Sandbox Code Playgroud)

第2步

int colorcodes[] = legend.Colors();
Run Code Online (Sandbox Code Playgroud)

第3步

for (int i = 0; i <  legend.Colors().length-1; i++) {
 .....
 .....
 }
Run Code Online (Sandbox Code Playgroud)

第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));
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助


cod*_*zjx 5

在这里,我将通过“传统Android之道”向您展示一种简单的方法,它非常简单,我的代码如下:

<LinearLayout
    android:id="@+id/i_am_chart_view_container"
    ...
    android:paddingRight="20dp"
    android:clipChildren="false"
    android:clipToPadding="false"
    .../>
Run Code Online (Sandbox Code Playgroud)

只需要padding在容器布局中添加一些内容,或margin在图表视图中添加一些内容,最后将clipChildren&设置clipToPadding为false。

结果如下:

蓝色区域是填充区域或边距区域。

在此处输入图片说明