Как установить тему для индетерминированного ProgressBar в ProgressDialog в Android - PullRequest
4 голосов
/ 13 ноября 2010

У меня есть приложение для Android (разработанное на A2.2) со следующей определенной темой:

<style name="ProgressBar"> parent="@android:style/Widget.ProgressBar">
    <item name="android:indeterminateDrawable">@drawable/progress_medium</item>
</style>
<style name="AlertDialog" parent="@android:style/AlertDialog">
    <item name="android:fullDark">@drawable/bgr_alert</item>
</style>
<style name="MyTheme" parent="@android:style/Theme.Light.NoTitleBar">
    <item name="android:alertDialogStyle">@style/AlertDialog</item>
    <item name="android:progressBarStyle">@style/ProgressBar</item>
</style>

где drawable «progress_medium» - мой пользовательский (синий) индикатор, а «bgr_alert» - пользовательский (белый) фон.

Когда я показываю диалоговое окно (тема приложения «MyTheme»)

@Override
protected Dialog onCreateDialog(int id) {
  progressDialog = new ProgressDialog(this);
  progressDialog.setCancelable(false);
  progressDialog.setIndeterminate(true);
  return progressDialog;
}

диалоговое окно, которое отображается, содержит пользовательский фон (белый), но недетерминированный индикатор выполнения не виден.

С другой стороны, если я установлю процесс рисования вручную:

progressDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.progress_medium));

все идеально - настраиваемый фон и настраиваемый прогресс прорисовки.

Любой намек, почему прорисовка progressBar не устанавливается неявно темой темы?

Ответы [ 2 ]

14 голосов
/ 13 ноября 2010

Хорошо, я получил свой ответ. Проблема в том, что макет progress_dialog.xml в Android содержит явный стиль для ProgressBar:

<ProgressBar android:id="@android:id/progress"
    style="@android:style/Widget.ProgressBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:max="10000"
    android:layout_marginRight="12dip" />

Так что мне нужно либо выполнить ручную настройку (как описано выше), либо сделать полностью настраиваемый диалог.

0 голосов
/ 05 августа 2011

У меня была эта проблема, и мне было действительно трудно найти решение.

Я думаю, что вы используете, в вашем определении MyTheme android: background:

<style name="MyTheme">
   <item name="android:background">@color/white_color</item>
   .....
   <item name=".....">value</item>
</style>

Я сделал ту же ошибку, мы должны использовать android: windowBackground и дать ему цвет или рисунок Таким образом, диалоги не будут затронуты фоном вашей темы.

Дайте мне знать, работает ли это решение для вас!

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