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
相关产品推荐
相关产品推荐

