【问题标题】:How to show a snackbar only when progressbar is visible and not when it becomes invisible. Please see details如何仅在进度条可见而不是不可见时才显示小吃条。请查看详情
【发布时间】:2016-06-23 18:16:57
【问题描述】:

我正在开发一个 Android 应用程序,我正在从 Firebase 下载一些数据并将其显示在我的应用程序中。

我设置了一个ProgressBar,它在活动启动时变得可见,在数据完全加载时变得不可见。

我已经设置了一个Handler,如果进度条可见,5 秒后会显示一个Snackbar。问题是即使进度条在 5 秒前变得不可见,小吃栏也会显示出来。

这是我所做的:

Handler slowInternetConnection = new Handler();
            slowInternetConnection.postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (progressBarLoadingRequests.getVisibility() == View.VISIBLE) {
                        snackbar = Snackbar
                                .make(coordinatorLayout, "It seems there is some problem with the network. Please wait...", Snackbar.LENGTH_LONG);
                        snackbar.setDuration(Snackbar.LENGTH_INDEFINITE);
                        snackbar.show();
                    } else {
                        Toast.makeText(getBaseContext(), "not showed", Toast.LENGTH_SHORT).show();
                    }
                }
            }, 5000);

我想知道检查这个:progressBarLoadingRequests.getVisibility() == View.VISIBLE 条件是否适合找出进度条是可见的还是不可见的?

或者我还能做些什么来实现我想要的。

请告诉我。

【问题讨论】:

    标签: android progress-bar android-view android-handler android-snackbar


    【解决方案1】:

    这种比较应该是有效的。我已经在带有进度条的示例上对其进行了测试,并且该语句有效。

    您可以使用具有内置函数isShowing()ProgressDialog 对其进行测试。它比使用 ProgressBar 更简单,因为您不需要将它包含在布局中,但它会冻结布局,直到对话框被关闭。

    【讨论】:

    • 如果比较是有效的,那么为什么即使在进度条不可见之后,snackbar 也会显示?
    • 您的代码在我的应用程序中使用时有效。问题一定出在您的代码之外。我会假设你的 progressBarLoadingRequests 是一个公共变量。也许它在某处被重置,不再持有对实际进度条的引用
    猜你喜欢
    • 1970-01-01
    • 2020-05-11
    • 2012-10-22
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多