android - MPAndroidChart 单击后更改切片颜色

标签 android mpandroidchart

我成功关注了YouTube tutorial使用 MPAndroidChart 在我的应用程序中绘制饼图,为饼图的每一片赋予自己的颜色。 我创建了一个 OnChartValueSelectedListener,以便我可以知道用户单击了饼图的哪一部分,如下所示:

public class MyActivity implements OnChartValueSelectedListener {
    @Override
    public void onNothingSelected() {
        // do stuff
    }

    @Override
    public void onValueSelected(Entry e, int dataSetIndex, Highlight h){
        Log.i("I clicked on", String.valueOf(e.getXIndex()));
    }

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        ...
        (PieChart)chart = (PieChart) findViewById(R.id.chart);
        ...
        chart.setOnChartValueSelectedListener(this);
    }
}

但即使知道点击了哪个切片,我似乎也找不到改变其颜色的方法。

官方文档( https://github.com/PhilJay/MPAndroidChart/wiki/Setting-Colors )为我们提供了一种定义和更改颜色的方法,但仅限于数据集,并且 PieChart 似乎只有一个数据集,因此如果我更改数据集的颜色,则所有其他数据集的颜色都会更改切片会看到它们的颜色发生变化。

所以,我想知道是否有办法,在下面的监听器中

public void onValueSelected(Entry e, int dataSetIndex, Highlight h)

更改已单击切片的颜色? 这是您已经面临的问题吗?

最佳答案

这很简单。

只需用新的值替换您为 DataSet 对象设置的颜色值即可。

// get the color(s) you provided for the chart
List<Integer> colors = chart.getData().getDataSetByIndex(dataSetIndex).getColors();

int newcolor = Color.RED;
colors.set(e.getXIndex(), newcolor); // replace the color at the specified index
chart.invalidate(); // refresh

关于android - MPAndroidChart 单击后更改切片颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34724442/

相关文章:

android - 使用 SAXparser 获取多个元素的信息 (Android)

java - MPAndroidChart 在图表的水平线上显示标签

android - 在 MPAndroidChart 条形图中为条形设置不同的颜色

java - setDescriptionTextSize(float size) 无法解析方法 MPAndroidChart

php - 如何使用 asynctask 将图像从 android 上传到 php

android - 无法补偿访问mysql时的时差

java - Android上的JavaFX-Gradle找不到JDK

android - Android Wear 上的直接互联网连接?

android - MPAndroidChart 设置高亮颜色

android - textView 上的数据绑定(bind)空指针异常