MPAndroidChart项目实战(三)——饼状图实现和文字重合问题解决

MPAndroidChart饼状图实战:解决文字重合问题
本文介绍了如何使用MPAndroidChart在Android项目中实现饼状图,并解决当数据占比过小时文字重合的问题。通过扩展PieEntry类并修改PieChartRenderer,实现了根据占比决定是否显示文字的功能。

本文出自:http://blog.csdn.net/dt235201314/article/details/70142117

源码下载(UpDating 欢迎Star):

https://github.com/JinBoy23520/MPAndroidChartDemoByJin

MPAndroidChart常见设置属性(一)——应用层  
MPAndroidChart项目实战(一)——实现对比性柱状图  
MPAndroidChart项目实战(二)——双平滑曲线(双折线图)和MarkView实现  
MPAndroidChart项目实战(三)——饼状图实现和文字重合问题解决  
MPAndroidChart项目实战(四)——柱状图实现及X轴文字不显示问题和柱状图上显示文字  
MPAndroidChart X轴文字斜着显示  
MPAndroidChart项目实战(五)——组合图实现趋势图  
MPAndroidChart项目实战(六)——自定义1MPAndroidChart滑动冲突解决(搞不定产品设计师就只能搞自己)  
MPAndroidChart项目实战(七)——自定义横向柱状图  
MPAndroidChart项目实战(八)——自定义分段堆积柱状图  
MPAndroidChart项目实战(九)——自定义带文字分段堆积柱状图  


一丶概述

上一篇代码补了这么久,不好意思,今天再说说MPAndroidChart实现饼状图以及文字冲突问题解决。

二丶演示效果



三丶实现功能

1.饼状图实现

2.解决当占比过小,文字重合问题


四丶看代码

与上一篇,提高代码复用率

PieChartEntity.Java 设置基本属性(这里不做详细说明,百度有文章可查看属性)

/**
 * 饼状图
 * Created by jin
 */
public class PieChartEntity  {
    private PieChart mChart;
    private List<PieEntry> mEntries;
    private String[] labels;
    private int[] mPieColors;
    private int mValueColor;
    private float mTextSize;
    private PieDataSet.ValuePosition mValuePosition;

    public PieChartEntity(PieChart chart, List<PieEntry> entries, String[] labels,
                          int []chartColor,  float textSize, int valueColor, PieDataSet.ValuePosition valuePosition) {
        this.mChart = chart;
        this.mEntries = entries;
        this.labels= labels;
        this.mPieColors = chartColor;
        this.mTextSize= textSize;
        this.mValueColor = valueColor;
        this.mValuePosition = valuePosition;
        initPieChart();
    }

    public PieChartEntity(PieChart chart, List<PieEntry> entries, String[] labels,
                          int []chartColor,  float textSize, int valueColor) {
        this(chart, entries, labels, chartColor, textSize, valueColor, PieDataSet.ValuePosition.INSIDE_SLICE);

    }

    private void initPieChart() {
        mChart.setExtraOffsets(5, 10, 5, 5);

        mChart.setDragDecelerationFrictionCoef(0.95f);
        mChart.setDrawCenterText(false);
        mChart.getDescription().setEnabled(false);
        mChart.setRotationAngle(0);
        // enable rotation of the chart by touch
        mChart.setRotationEnabled(true);
        mChart.setHighlightPerTapEnabled(
<think>嗯,用户这次的问题是关于Word中图片文字重合解决方法。从引用内容来看,用户特别提到了图片选用"嵌入式"版式时会出现文字重叠问题,甚至拖动也无法看到完整图片的情况。 用户可能正在赶一份重要文档,遇到这种排版问题会很烦躁。虽然引用里提到了自动编号的解决方法,但核心需求其实在第个引用提到的图片排版问题上。需要特别注意嵌入式图片的特殊性——它被Word当作一个字符处理,所以容易出现错位。 回顾之前对话,用户似乎对Office操作不太熟悉,可能需要更基础的操作指引。解决方案应该分层次:先给出最直接的版式调整法,再补充进阶的精确定位技巧。 考虑到用户可能遇到的是两种情况:一种是图片浮在文字上方,另一种是嵌入式图片被挤压变形。第一种情况直接修改环绕方式就能解决,第二种则需要调整行间距或段落格式。 用户提供的引用3虽然提到WordPiece分词算法,但这个当前问题完全无关,可以忽略。重点应该放在引用1描述的图片重叠问题上。 值得补充说明的是,在修改嵌入式图片时,很多人会忽略段落行间距的影响。当图片高度超过行高时,即使设置"单倍行距"也可能显示不全,这时需要手动设置固定值行距。这个细节容易被忽略,但对解决问题很关键。 最后要提醒锚点定位的技巧,因为跨页图片错位时手动拖动很麻烦,用段落标记定位更可靠。这种专业技巧普通用户很少知道,但对长期编辑文档的人特别实用。 </think>根据引用资料及Word排版原理,解决图片与文字重合问题的核心是**调整图片版式**,以下是具体操作步骤: --- ### **解决方法** #### 1️⃣ **更改图片环绕方式(推荐)** - **步骤:** 1. 选中重叠的图片 → 右键选择 **"环绕文字"** 2. 将默认的 **"嵌入型"** 改为 **"四周型"** 或 **"紧密型"** 3. 拖动图片到任意位置,文字会自动环绕避让 - **原理:** 嵌入式图片被Word视为字符对象,可能撑大行高导致重叠;改为环绕式后图片脱离文本流[^1]。 #### 2️⃣ **调整嵌入式图片的行间距** - **适用场景:** 必须保持嵌入式版式时 - **步骤:** 1. 选中图片所在段落 → 右键进入 **"段落"** 设置 2. 在 **"缩进间距"** 选项卡中: - 将行距设为 **"单倍行距"** 或 **"固定值"**(需大于图片高度) - 取消勾选 **"如果定义了文档网格,则对齐到网格"** - **效果:** 避免图片挤压行高导致文字重叠[^1]。 #### 3️⃣ **精确控制图片位置(进阶)** - **操作:** 1. 双击图片 → 打开 **"布局"** 选项卡 2. 在 **"位置"** 中: - 勾选 **"对象随文字移动"**(保持与段落关联) - 取消 **"锁定标记"**(避免定位偏移) 3. 在 **"大小"** 中微调尺寸,确保不超出页边距 --- ### **关键逻辑图示** ```mermaid graph TD A[图片文字重叠] --> B{是否需嵌入式?} B -->|是| C[调整段落行间距] B -->|否| D[改为四周型/紧密型] D --> E[拖动图片至空白区域] C --> F[固定值行距>图片高度] ``` --- ### **预防措施** - **插入图片前:** 在 **Word选项 → 高级 → 剪切复制粘贴** 中,将图片粘贴默认设置为 **"四周型"** - **批量修改:** 按 `Ctrl` 多选图片 → 统一更改环绕方式 > ⚠️ 注意:若图片始终无法选中,可能是被置于 **"文字下方"** 层(需在 **"选择窗格"** 中解锁图层顺序)。 ---
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值