安卓进度条不显示

Posted

技术标签:

【中文标题】安卓进度条不显示【英文标题】:Android progressBar not showing 【发布时间】:2011-09-16 21:33:22 【问题描述】:

我有一个应该在 AsyncTask 中运行的进度条,但它没有出现,尽管任务运行

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_ android:layout_
android:background="@drawable/splashportrait">
<ProgressBar android:layout_alignParentBottom="true" android:indeterminate="true"
    android:layout_centerHorizontal="true" android:paddingBottom="450dip"
    android:layout_ android:layout_
    android:id="@+id/progressBar1"></ProgressBar>
</RelativeLayout>

代码:

ProgressBar diagProgress;

public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splashscreen);

    diagProgress = (ProgressBar)findViewById(R.id.progressBar1);
    DiagnosticsTask diag = new DiagnosticsTask();
    diag.execute();

  /**rest of class ommitted here**/


private class DiagnosticsTask extends AsyncTask<String, String, Boolean> 

    //Show spinner
    protected void onPreExecute() 
        //dialog.setMessage("Loading corresponding destinations...");
        //dialog.show();
        diagProgress.setVisibility(View.VISIBLE);
        diagProgress.showContextMenu();
        Log.e("AsyncStatus", "spinner shown");
    
 /*other parts of the thread ommitted here*/


【问题讨论】:

【参考方案1】:

我在测试 xD 后忘记打开动画时遇到了这个问题

【讨论】:

我遇到了同样的问题。当您在 android 上进行 UI 测试时,您必须禁用动画,因此会出现奇怪的 UI 行为(例如根本不显示进度条)!这不是一个糟糕的答案,因为它引导我走向正确的方向:) 同样的事情发生在我身上。检查你的安卓设备:设置>开发>关于动画的任何东西 在浪费时间处理进度条之后,我现在意识到我必须在手机上激活动画,谢谢! 天哪,我在使用 Espresso 进行 UI 测试时关闭了动画。这个答案是要记住的线索。谢谢。 天哪!我从没想过。无论如何,谢谢。这是一个很好的答案。【参考方案2】:

试试用下面的替换你的 ProgressBar。

<ProgressBar
    android:id="@+id/progressBar1"
    android:layout_
    android:layout_
    android:layout_centerInParent="true"
    android:indeterminate="true"
    />

如果它有效,请告诉我,我会解释原因。

理由: 现在我将您的代码放在下面的 ProgressBar

<ProgressBar
    android:id="@+id/progressBar1"
    android:layout_
    android:layout_
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:indeterminate="true"
    android:paddingBottom="450dip"
    />

RelativeLayout 允许您进行 Z 排序。因此,由于您需要 ProgressBar 在顶部,因此您无需执行您正在执行的操作。

android:layout_alignParentBottom="true"  

这会将进度条设置在布局的底部:

android:paddingBottom="450dip" android:layout_ android:layout_

这里的所有三个值都是绝对的,就 Android 而言,这是一个严格的禁忌。很可能您的 paddingBottom 将您的 ProgressBar 推到了视图之外。由于您的填充大于控件的实际宽度/高度

作为一个经验法则,始终使用相对值使其适用于所有设备和外形尺寸。

让我知道这是否有意义。

【讨论】:

这行得通,理由是什么?在白色背景上似乎看不到它,谢谢 检查基本原理,如果您需要更多信息,请告诉我。 感谢 CQM 的白底评论(掌心)【参考方案3】:

您忘记执行任务了吗?

  ...
  diagProgress = (ProgressBar)findViewById(R.id.progressBar1);
  new DiagnosticsTask().execute();


  ....

【讨论】:

任务运行,我提到过,我将编辑我的代码 sn-p 以显示该部分【参考方案4】:

当我使可见性消失并且可见瞬间消失时,我遇到了这个问题,在我的情况下工作不可见和可见

private fun hideShowProgressBar(isShowProgress:Boolean)
    if(isShowProgress)
            progressBar.visibility = View.VISIBLE
            tvSetProgress.visibility = View.VISIBLE
    else
        progressBar.visibility = View.INVISIBLE
        tvSetProgress.visibility = View.INVISIBLE
    

【讨论】:

以上是关于安卓进度条不显示的主要内容,如果未能解决你的问题,请参考以下文章

除非在 shift 键绕过模式下,否则进度条不显示

在recyclerview片段Reandroid中屏幕旋转后进度条不显示

Dropzone.js 上传进度条不显示

Android子线程进度条不显示的问题

Unity基础控件Scroll View的使用,以及进度条不显示的问题

Unity基础控件Scroll View的使用,以及进度条不显示的问题