首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPAndroidChart图例定制

MPAndroidChart图例定制
EN

Stack Overflow用户
提问于 2015-03-19 07:20:02
回答 5查看 41.2K关注 0票数 16

我正在使用MPAndroidChart库。我要定制MPAndroidChart中的传说。在MPAndroidChart库中,我试图设置传奇的位置。通过给定的代码legend.setPosition(LegendPosition.BELOW_CHART_CENTER),但无法执行。我必须设置如下图片所示的传说

我会感谢你的帮助

EN

回答 5

Stack Overflow用户

发布于 2015-03-19 11:38:24

在您的情况下,我建议禁用由图表绘制的Legend,而不是自己的实现。

代码语言:javascript
复制
chart.getLegend().setEnabled(false)

在上面所示的情况下,您可能需要一个ListView,它从图表Legend对象中获取数据并显示它。

当您查看传奇类时,您会注意到它有用于颜色和标签的成员变量。

您可以检索这些数组(getColors()getLegendLabels())并使用它们在ListView中显示。

票数 11
EN

Stack Overflow用户

发布于 2015-03-19 13:28:20

请查找给出的答案MPAndroidChart -传奇标签正在被切断。我已经根据你的问题给出了答案。寻找一定会对您有帮助的给定代码。您必须通过以下步骤实现具有它们的传奇颜色和标签的自定义传奇:

步骤1

代码语言:javascript
复制
Legend legend = mChart.getLegend();

步骤2

代码语言:javascript
复制
int colorcodes[] = legend.Colors();

步骤3

代码语言:javascript
复制
for (int i = 0; i <  legend.Colors().length-1; i++) {
 .....
 .....
 }

步骤4

然后,你将不得不采取一个布局水平或垂直,并得到传奇,颜色代码和传奇标签,并根据传奇长度,创建布局和标签。代码示例如下:

代码语言:javascript
复制
        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));
       left_layout.addView(txt_unit);

        LinearLayout.LayoutParams parms_middle_layout = new LinearLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        parms_middle_layout.weight = 1F;
        LinearLayout middle_layout = new LinearLayout(this);
        middle_layout.setOrientation(LinearLayout.HORIZONTAL);
        middle_layout.setGravity(Gravity.CENTER);
        middle_layout.setLayoutParams(parms_middle_layout);

        TextView txt_leads = new TextView(this);
        txt_leads.setText("450");
        middle_layout.addView(txt_leads);

        LinearLayout.LayoutParams parms_right_layout = new LinearLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        parms_right_layout.weight = 1F;
        LinearLayout right_layout = new LinearLayout(this);
        right_layout.setOrientation(LinearLayout.HORIZONTAL);
        right_layout.setGravity(Gravity.CENTER);
        right_layout.setLayoutParams(parms_right_layout);

        TextView txt_leads_percentage = new TextView(this);
        txt_leads_percentage.setText(munit_percentage_list.get(i) + "");
        right_layout.addView(txt_leads_percentage);

        childlayout.addView(left_layout);
        childlayout.addView(middle_layout);
        childlayout.addView(right_layout);

然后,将您在运行时创建的(子布局)添加到主布局中。

票数 9
EN

Stack Overflow用户

发布于 2019-04-22 09:06:50

用于设置自定义图例:

代码语言:javascript
复制
public void setLegends(){

Legend l = holder.pieChart.getLegend();

l.getEntries();

l.setPosition(Legend.LegendPosition.BELOW_CHART_CENTER);

l.setYEntrySpace(10f);

l.setWordWrapEnabled(true);

LegendEntry l1=new LegendEntry("Male",Legend.LegendForm.CIRCLE,10f,2f,null,Color.YELLOW);
LegendEntry l2=new LegendEntry("Female", Legend.LegendForm.CIRCLE,10f,2f,null,Color.RED);

l.setCustom(new LegendEntry[]{l1,l2});

l.setEnabled(true);

}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29139061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档