【问题标题】:Android Progressbar showing/hiding while loading data加载数据时显示/隐藏的Android进度条
【发布时间】:2020-07-09 00:45:13
【问题描述】:

我需要这方面的帮助:在从外部来源检索数据时显示/隐藏进度条。

我在活动布局资源文件中声明了这个进度条:

   <ProgressBar
        android:id="@+id/progressBar2"
        style="?android:attr/progressBarStyle"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_centerInParent="true"/>

在 onCreate 活动方法中它是不可见的:

progressBar = (ProgressBar) findViewById(R.id.progressBar2);
progressBar.setVisibility(View.INVISIBLE);

在从服务器检索数据之前,我展示了它 - 这就是我打算做的事情:

progressBar.setVisibility(View.VISIBLE);

然后,当检索到数据时,我打算再次隐藏它:

 progressBar.setVisibility(View.INVISIBLE);

但是,当然,不像我假装的那样工作。 当应用程序与服务器联系以获取数据时,代码或这种显示简单进度条的方法有什么问题?

【问题讨论】:

  • 您当前的代码没问题。请分享您的代码,其中包括显示进度条 + 检索数据 + 隐藏进度条

标签: android progress-bar android-progressbar


【解决方案1】:

您发布的代码是正确的 - 您遇到的“问题”是没有进展,因此您的代码似乎无法正常工作。

您也必须设置进度。通常在下载文件、某些数据或加载页面时,我们会在回调中返回一个进度。如果您没有类似的东西,您可以每秒或某时增加进度条(或者只使用旋转/无限进度条)。

不过你会这样做:

progressBar.setProgress(progressBar.getProgress()+1);

【讨论】:

  • 感谢您的回复。我将它用作旋转/无限进度条,我在 onCreate Activity 方法中说过我让它不可见,在改造调用使其可见之前,然后在回调中使其再次不可见。还有一件事,如果我不在 onCreate 中设置为不可见,则旋转正在运行。
【解决方案2】:

如果您从服务器获取数据,您只需按照以下简单步骤操作:-

第 1 步:使进度条的可见性变为消失/不可见。

第 2 步:在调用服务器之前显示进度条。

第 3 步 :在响应成功回调上,只需制作进度条 又看不见了。

无论是使用 Retrofit 还是(volley / async task),都只需遵循相同的步骤

【讨论】:

  • 感谢您的回复。是的,这几乎就是我正在做的事情。我在 call.enqueue 改造调用之前使其可见,稍后在回调中使其再次不可见。我试过使用 invisible/gone ,但是是一样的。一件事如果我不在 onCreate Activity 方法中使它不可见,旋转正在运行,这让我感到困惑。有什么线索知道会发生什么……?
【解决方案3】:

代码和逻辑是正确的,我错过的是为进度条设置属性“indeterminate=true”:

<ProgressBar
 android:id="@+id/progressBar2"
 style="?android:attr/progressBarStyle"
 android:layout_width="150dp"
 android:layout_height="150dp"
 android:layout_centerInParent="true"
 android:indeterminate="true"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多