Диалог прогресса имеет белый фон на Lollipop устройств,

я переношу свое приложение на Android 5.0, т. е. устройства Lollipop , у меня проблема с диалогом прогресса, он отлично работает на устройствах pre lollipop , но на lollipop он имеет белый фон, как показано на рисунке enter image description here

но в pre lollipop устройств он имеет прозрачный фон enter image description here

ниже мой код :

прогресса.XML в макете

<?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center"
   android:background="@android:color/transparent" >


<ProgressBar
        android:id="@+id/progressBar3"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       android:background="@android:color/transparent"
        android:layout_centerHorizontal="true"

        android:indeterminate="true"
        android:indeterminateDrawable="@drawable/myprogress"
        android:minHeight="48dp" />
   </RelativeLayout>

myprogress.xml в drawable

<shape
    android:shape="oval"
    android:useLevel="false" >
    <size
        android:height="48dip"
        android:width="48dip" />

    <gradient
        android:centerColor="#ff001100"
        android:centerY="0.50"
        android:endColor="#ffffffff"
        android:startColor="#ff000000"
        android:type="sweep"
        android:useLevel="false" />
</shape>

и в Java я использую вот так

public ProgressDialog mProgressDialog;

  if (mProgressDialog != null && mProgressDialog.isShowing()) {
            mProgressDialog.cancel();
        }

        mProgressDialog = new ProgressDialog(context);
        mProgressDialog.setCancelable(false);

        mProgressDialog.show();
        mProgressDialog.setContentView(R.layout.progress);

4 ответов


вопрос был белый фон на Lollipop.

решение либо из двух (оба одинаковы, хотя):

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

или

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

похоже, у вас есть решение сейчас, но если кто-то еще испытывает аналогичную проблему; я обнаружил, что переопределение темы ProgressDialog в конструкторе работало для меня. Что-то вроде:

mProgressDialog = new ProgressDialog(context, ProgressDialog.THEME_HOLO_LIGHT);

вы также можете создать стиль и присвоить стиль диалога:

    ProgressDialog dialog = new ProgressDialog(context, R.style.ProgressDialogStyle);

стиле (в стиле.XML-код):

<style name="ProgressDialogStyle" parent="android:Theme.Holo.Light.Dialog">
    <item name="android:windowBackground">@color/color_transparent</item>
</style>

Я решил эту проблему с помощью этого учебника http://www.techrepublic.com/blog/software-engineer/create-a-transparent-progress-dialog-on-android/

Я просто передаю свой drawable в этот код

mProgressDialog = new TransparentProgressDialog(context, **R.drawable.progress**);
        mProgressDialog.setCancelable(false);

и остальной код такой же, как в этом примере.