转载请注明:http://blog.csdn.net/ly20116/article/details/50905789

MPAndroidChart是一个非常优秀的开源图表库,MPAndroidChart可以绘制各种常用的图表类型:折线图、柱形图、饼图、散点图等等。 
github地址:https://github.com/PhilJay/MPAndroidChart 
具体的导入方式就不再详细的说了,本文主要解决在图例后面加上数字或文本或占的百分比等,也就是定制想要的图例。 
MPAndroidChart的提供的饼图图例是这种: (注:图片为引用) 
 

而我们想要实现的效果是这种: 

就是在图例后面加上数字或文本

通过借鉴Stackoverflow上的大神的解决方案: 
https://stackoverflow.com/questions/29139061/mpandroidchart-legend-customization

下面来开始我们的项目: 
一、获取Legend,使Legend不显示

Legend legend=mPieChart.getLegend();//设置比例图
legend.setEnabled(false);//图例不显示
  • 1
  • 2

二、定义数组colors和labels及数据datas

private int[] colors;//颜色集合
private String[] labels;//标签文本
private float[] datas={16912f,2488f,600f};//数据,可以是任何类型的数据,如String,int
  • 1
  • 2
  • 3

三、获取Legend中的colors和labels

colors=legend.getColors();
labels=legend.getLabels();
  • 1
  • 2

四、定义customizeLegend()方法,实现图例的绘制

/**
* 定制图例,通过代码生成布局
*/
private void customizeLegend(){
for(int i=0;i<datas.length;i++){
LinearLayout.LayoutParams lp=new LinearLayout.
LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
lp.weight=1;//设置比重为1
LinearLayout layout=new LinearLayout(this);//单个图例的布局
layout.setOrientation(LinearLayout.HORIZONTAL);//水平排列
layout.setGravity(Gravity.CENTER_VERTICAL);//垂直居中
layout.setLayoutParams(lp); //添加color
LinearLayout.LayoutParams colorLP=new LinearLayout.
LayoutParams(20,20);
colorLP.setMargins(0, 0, 20, 0);
LinearLayout colorLayout=new LinearLayout(this);
colorLayout.setLayoutParams(colorLP);
colorLayout.setBackgroundColor(colors[i]);
layout.addView(colorLayout); //添加label
TextView labelTV=new TextView(this);
labelTV.setText(labels[i]+" ");
layout.addView(labelTV); //添加data
TextView dataTV=new TextView(this);
dataTV.setText(datas[i]+"");
layout.addView(dataTV); legendLayout.addView(layout);//legendLayout为外层布局即整个图例布局,是在xml文件中定义 }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

图例示意图: 

customizeLegend()方法的调用可在设置图例不显示的后面,也可以在其它地方调用,但是必须在PieChart调用setData()方法的后面,这样才能获取到colors和labels.

总结: 
简而言之,就是获取legend的颜色colors和标签文本labels,然后结合自己的数据,在新的布局中绘制即可。 
你可以在图例后面添加更多的类型的数据。 
图例布局的位置可以在xml文件中设置。 
也可以实现各种布局的图例

android MPAndroidChart饼图实现图例后加数字或文本(定制图例)的更多相关文章

  1. Android MPAndroidChart RadarChart (蜘蛛网图)

    最近项目涉及到这个统计图形,经过实现,记录下,防止忘记了. 1.Github地址:MPAndroidChart 官方使用RadarChart demo:RadarChartActivitry 2.使用 ...

  2. Android限定EditText的输入类型为数字或者英文(包括大小写),EditText,TextView只能输入两位小数

    Android限定EditText的输入类型为数字或者英文(包括大小写) // 监听密码输入框的输入内容类型,不可以输入中文    TextWatcher mTextWatcher = new Tex ...

  3. 携程Android App插件化和动态加载实践

    携程Android App的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验.本文将详细介绍Android平台插件式开发和动态加载技术的原理和实 ...

  4. android中使用jni对字符串加解密实现分析

    android中使用jni对字符串加解密实现分析 近期项目有个需求.就是要对用户的敏感信息进行加密处理,比方用户的账户password,手机号等私密信息.在java中,就对字符串的加解密我们能够使用A ...

  5. MPAndroidChart——饼图

    MPAndroidChart--饼图 MPAndroidChart是安卓下的一个开源图形库,很多效果,简单看几个效果图 Github地址:https://github.com/PhilJay/MPAn ...

  6. Android学习笔记_36_ListView数据异步加载与AsyncTask

    一.界面布局文件: 1.加入sdcard写入和网络权限: <!-- 访问internet权限 --> <uses-permission android:name="andr ...

  7. 使用tcp_probe时最初没有输出,先卸载后加载模块之后就有了。

    刚才尝试使用tcp_probe来查看tcp的窗口的变化,最初按照tcpprobe | The Linux Foundation的步骤进行设置,但是iperf之后tcp_probe并没有输出结果.按照t ...

  8. android html 图片处理类--加载富文本工具类

    在android开发中,一些资讯类页面,里面有html标签和图片,html 标签一般通过Html.fromHtml方法,即可以解决,但是如果html 有图片标签,那么,Html.fromHtml 好像 ...

  9. [Reprint]C++函数前和函数后加const修饰符区别

    c++中关于const的用法有很多,const既可以修饰变量,也可以函数,不同的环境下,是有不同的含义.今天来讲讲const加在函数前和函数后面的区别.比如: 01 #include<iostr ...

随机推荐

  1. Shell编程—定时任务

    应用:定时催收,定时下发,对新增内容入库同步, 时间:凌晨 服务器Reahat Linux: Bash HPUX:kbash? #!/bin/sh #!/bin/bash echo awk #输入重定 ...

  2. SAP SMARTFORM 变量显示技巧

    &symbol& (括号中,小写字母为变量) &symbol& 屏蔽从第一位开始的N位&symbol (n)&       只显示前N位&sym ...

  3. CAD2010中文版安装问题记录

    CAD2010中文版安装到简体中文语言包的时候提示[错误1606无法访问网络位置setup],直接打开cad2010 提示 [adui18res.dll not found]: 首先,进入注册表(re ...

  4. 服务器×××上的MSDTC不可用解决办法

    MSDTC(分布式交易协调器),协调跨多个数据库.消息队列.文件系统等资源管理器的事务.该服务的进程名为Msdtc.exe,该进程调用系统Microsoft Personal Web Server和M ...

  5. UVALive 4953 Wormly--【提醒自己看题要仔细】

    有一条虫要过桥,桥有断的木板和好的木板.虫有L条腿B个身体,桥长N.01串表示桥的好坏.输出最少操作次数. 一开始虫的身体在最左B桥上,腿在最左L桥上,最后要到达最右B以及最右L... 操作有2种:① ...

  6. codeforces 500A. New Year Transportation

    题目链接:http://codeforces.com/problemset/problem/500/A 题目意思:给出 n-1 个 cell,每个 cell 有一个值 ai,表示在这个编号为 i 的 ...

  7. cordova android platform cordova build 遇到的问题

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一.下载gradle-2.2.1-all.zip不成功,一直在下载,卡在这个downloading http://services.gradle. ...

  8. struts配置文件中如何从一个package的action跳到另一个package中的某个action

    <package name="pack1" namespace="/test1" extends="struts-default"&g ...

  9. rsync实现同步

    一.备份客户端: 1.创建/etc/rsyncd.secrets 权限配置600 (写服务器端的账户密码) 2.客户端配置文件: port=873log file=/var/log/rsync.log ...

  10. IOS - SDWebImage 非ARC 问题

    非arc项目中使用SDWebImage类库 1.添加类库引用    (1)ImageIO.framework    (2)MapKit.framework 2.在targets->build P ...