Android progressBar没有显示

时间:2011-09-16 21:33:22

标签: android progress-bar

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

XML:

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

CODE:

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*/

}

3 个答案:

答案 0 :(得分:25)

我在测试xD

后忘记打开动画时遇到了这个问题

答案 1 :(得分:18)

尝试使用以下内容替换ProgressBar。

<ProgressBar  android:indeterminate="true"
android:layout_centerInParent="true" 
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/progressBar1"></ProgressBar>

如果有效,请告诉我,我会解释其基本原理。

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

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

RelativeLayout允许您进行Z排序。所以,既然你需要ProgressBar,你不需要做你正在做的那种操作。

android:layout_alignParentBottom="true"  

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

android:paddingBottom="450dip" android:layout_width="200dip" android:layout_height="200dip"

这里的所有三个值都是绝对的,就Android而言是严格的禁忌。最可能你的paddingBottom正在将你的ProgressBar推出View。因为您的填充大于控件的实际宽度/高度

作为拇指规则,始终使用相对值来处理所有设备和外形。

如果这是有道理的,请告诉我。

答案 2 :(得分:0)

你忘记执行任务了吗?

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


  ....