安卓进度条不显示
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
【讨论】:
以上是关于安卓进度条不显示的主要内容,如果未能解决你的问题,请参考以下文章
在recyclerview片段Reandroid中屏幕旋转后进度条不显示