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

AnyChart进度条不显示且工具栏晚于图表加载问题求助

解决AnyChart进度条不显示及工具栏加载滞后问题

看起来你遇到的核心问题有两个:进度条被图表视图遮挡,以及没有配合异步数据加载正确控制进度条的显示时机。我来帮你一步步解决:

1. 修复布局:避免进度条被覆盖

你的RelativeLayout中,AnyChartView设置了match_parent的宽高,会直接覆盖在ProgressBar上方,导致进度条完全看不到。修改布局,让图表视图位于进度条下方:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.dell.ora.ChartFragment">

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="visible"/> <!-- 初始设置为可见 -->

    <com.anychart.anychart.AnyChartView
        android:id="@+id/any_chart_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/progressBar"/> <!-- 让图表在进度条下方显示 -->

</RelativeLayout>

2. 配合异步数据加载控制进度条

因为你用Firebase Firestore加载数据是异步操作,直接设置图表会导致进度条还没来得及显示就被隐藏。你需要手动在数据加载前后控制进度条的可见性:

AnyChartView anyChartView = x.findViewById(R.id.any_chart_view);
pbar = x.findViewById(R.id.progressBar);
anyChartView.setProgressBar(pbar);

// 初始显示进度条
pbar.setVisibility(View.VISIBLE);

FirebaseFirestore db = FirebaseFirestore.getInstance();
final TagCloud tagCloud = AnyChart.tagCloud();
tagCloud.setTitle("Programming statisctics");

OrdinalColor ordinalColor = new OrdinalColor();
ordinalColor.setColors(new String[] { "#26959f", "#f18126", "#3b8ad8", "#60727b", "#e24b26" });
tagCloud.setColorScale(ordinalColor);
tagCloud.setAngles(new Double[] {-90d, 0d, 90d});
tagCloud.getColorRange().setEnabled(true);
tagCloud.getColorRange().setColorLineSize(15d);

final List<Integer> list = new ArrayList<>();
list.add(1383220000);
list.add(1383220000);
list.add(1316000000);
list.add(324982000);
list.add(263510000);

// 异步加载Firebase数据
db.collection("jobs")
    .get()
    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                // 这里处理你的数据,把数据绑定到tagCloud上
                // 示例:tagCloud.data(yourData);
                
                // 数据处理完成后设置图表
                anyChartView.setChart(tagCloud);
                // 隐藏进度条
                pbar.setVisibility(View.GONE);
            } else {
                // 加载失败时也隐藏进度条,并提示错误
                pbar.setVisibility(View.GONE);
                Toast.makeText(getContext(), "数据加载失败,请重试", Toast.LENGTH_SHORT).show();
            }
        }
    });

3. 关于工具栏加载滞后

工具栏加载晚于图表的问题,通常是因为图表渲染完成后才初始化工具栏。你可以尝试在设置图表前,先初始化工具栏的配置,或者确保AnyChartView的初始化流程正确:

// 提前配置工具栏
tagCloud.getToolbar().setEnabled(true);
// 可以自定义工具栏按钮
tagCloud.getToolbar().setItems(new String[]{"zoomIn", "zoomOut", "resetZoom"});

这样调整后,进度条应该能正常显示,工具栏的加载也会和图表同步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:29:38