Android progressBar не отображается
у меня есть progressbar, который должен работать в 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>
код:
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 ответов
попробуйте заменить 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 из поля зрения. Поскольку ваша прокладка больше фактической ширины / высоты элемента управления
как правило большого пальца всегда используйте относительные значения для его работы на всех устройствах и форм-факторах.
Дайте мне знать, если это имеет смысл.
вы забыли выполнить свою задачу?
...
diagProgress = (ProgressBar)findViewById(R.id.progressBar1);
new DiagnosticsTask().execute();
....