Xamarin.Android: программно изменить цвет фона ProgessDialog - PullRequest
0 голосов
/ 13 июня 2018

Я использую ProgressDialog при загрузке следующей операции в моем приложении Xamarin.Android.

ProgressDialog progressDialog = new ProgressDialog(this);

Я могу установить цвет круга программно:

Drawable circle = new ProgressBar(this).IndeterminateDrawable.Mutate();
circle.SetColorFilter(Color.Red, PorterDuff.Mode.SrcIn);
progressDialog.SetIndeterminateDrawable(circle);

и я могу установить цвет текста программно:

SpannableString ss = new SpannableString("This is my message");
ss.SetSpan(new ForegroundColorSpan(Color.Red), 0, ss.Length(), 0);
progressDialog.SetMessage(ss);

Но я не могу найти способ установить цвет фона программно.Может быть, вы можете помочь мне с этой проблемой.Я не хочу использовать Style.Theme.

EDIT :

Кажется, что создание полного пользовательского представления, которое используется в AlertDialog, является лучшим решениемв этом случае.Спасибо за подсказку Иоахим

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/llProgressDialog"
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true"
    android:padding="20dp"
    android:orientation="horizontal">
    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:layout_marginLeft="20dp"
        android:text= "Laden ..."
        android:layout_gravity="center"
        android:id="@+id/tvProgressDialog"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"/>
</LinearLayout>

1 Ответ

0 голосов
/ 13 июня 2018

Простой способ сделать это - создать стиль, а затем использовать стиль при создании.

new ProgressDialog(Context, Resource.Style.progressDialogeStyle);

Однако, если вы по какой-либо причине не хотите этого делать, я не думаю, что есть простойпуть.Вы могли бы установить представление диалогового окна progressdogue, но тогда вам нужно было бы создать все представление вручную.

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

...