Android ProgressBar не отображается - PullRequest
       1

Android ProgressBar не отображается

9 голосов
/ 17 сентября 2011

У меня есть индикатор выполнения, который должен работать в 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 ]

27 голосов
/ 15 августа 2017

У меня была такая проблема, когда я забыл включить анимацию после тестирования xD

19 голосов
/ 19 сентября 2011

Попробуйте заменить ваш 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 из поля зрения.Так как ваши отступы больше, чем фактическая ширина / высота элемента управления

В качестве правила большого пальца всегда используйте относительные значения для его работы на всех устройствах и форм-факторах.

Дайте мне знать, еслиэто имеет смысл.

0 голосов
/ 17 сентября 2011

Вы забыли выполнить свою задачу?

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


  ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...