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

发布于 2015-03-19 11:38:24
在您的情况下,我建议禁用由图表绘制的Legend,而不是自己的实现。
chart.getLegend().setEnabled(false)在上面所示的情况下,您可能需要一个ListView,它从图表Legend对象中获取数据并显示它。
当您查看传奇类时,您会注意到它有用于颜色和标签的成员变量。
您可以检索这些数组(getColors()、getLegendLabels())并使用它们在ListView中显示。
发布于 2015-03-19 13:28:20
请查找给出的答案MPAndroidChart -传奇标签正在被切断。我已经根据你的问题给出了答案。寻找一定会对您有帮助的给定代码。您必须通过以下步骤实现具有它们的传奇颜色和标签的自定义传奇:
步骤1
Legend legend = mChart.getLegend();步骤2
int colorcodes[] = legend.Colors();步骤3
for (int i = 0; i < legend.Colors().length-1; i++) {
.....
.....
}步骤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));
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);然后,将您在运行时创建的(子布局)添加到主布局中。
发布于 2019-04-22 09:06:50
用于设置自定义图例:
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);
}https://stackoverflow.com/questions/29139061
复制相似问题