You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DialogFragment中自定义MP Chart样式修改不生效问题求助

问题根因

你的代码存在重复覆盖LineData配置的核心问题,具体问题点如下:

  • 你在setData()方法中已经完成了带自定义样式的LineDataSet(set1)配置,且已经给图表设置了对应的数据,所有线条颜色、渐变填充的配置都在这个步骤里生效
  • 但setData()执行结束后,你在onCreateView的末尾又重新创建了一个无任何自定义样式的LineDataSet,再次调用lineChart.setData()直接覆盖了之前的配置,导致所有样式失效
  • 缺少MPAndroidChart修改配置后必须的重绘触发调用invalidate()

修复方案

直接删除onCreateView末尾冗余的3行数据集配置代码,最后补充触发图表重绘的调用即可:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    view =  inflater.inflate(R.layout.fragment_scripchart, container, false);
    getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    context = getContext();

    drawablePositive = ContextCompat.getDrawable(context, R.drawable.symbolchart_bg);
    lineChart = view.findViewById(R.id.symbolChart);

    setData(20,3);
    // 下面的原有配置保留即可,冗余的重复配置可以自行清理
    lineChart.getDescription().setEnabled(true);
    lineChart.setDrawGridBackground(true);
    lineChart.setDragEnabled(true);
    lineChart.getLegend().setEnabled(true);
    lineChart.setScaleEnabled(true);
    lineChart.setScaleYEnabled(true);
    lineChart.setScaleXEnabled(true);
    lineChart.setDrawGridBackground(false);
    lineChart.getXAxis().setEnabled(true);
    lineChart.getLineData().setDrawValues(true);
    lineChart.getXAxis().setDrawGridLines(true);
    lineChart.getXAxis().setDrawAxisLine(true);
    lineChart.getAxisLeft().setDrawGridLines(true);
    lineChart.getAxisRight().setDrawGridLines(true);
    lineChart.getAxisRight().setDrawZeroLine(true);
    lineChart.getAxisLeft().setDrawZeroLine(true);
    lineChart.getAxisRight().setDrawLabels(true);
    lineChart.getAxisLeft().setDrawLabels(true);
    lineChart.getAxisLeft().setEnabled(true);
    lineChart.getAxisRight().setEnabled(true);
    lineChart.setMaxHighlightDistance(150);
    lineChart.setViewPortOffsets(0, 0, 0, 0);
    lineChart.setTouchEnabled(false);
    lineChart.setPinchZoom(false);
    lineChart.notifyDataSetChanged();

    // 删除下面这3行冗余代码!!!
    // LineDataSet lineDataSet = new LineDataSet(entryList,"BuySell");
    // lineData = new LineData(lineDataSet);
    // lineChart.setData(lineData);

    // 补充这行触发图表重绘
    lineChart.invalidate();

    return  view;
}

另外你代码里存在setDrawGridBackground先后赋值true又赋值false这类冗余配置,可以自行清理,不影响功能。

内容的提问来源于stack exchange,提问作者AYESHA SIDDIQUI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:15:04