Xamarin.Android:以编程方式更改ProgessDialog背景颜色

时间:2018-06-13 10:34:57

标签: android xamarin.android background-color progressdialog programmatically

在我的Xamarin.Android应用程序中加载下一个Activity时,我正在使用 ProgressDialog

ProgressDialog progressDialog = new ProgressDialog(this);

我可以通过编程方式设置Circle-Color:

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

我可以通过编程方式设置Text-Color:

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

但我找不到以编程方式设置Background-Color的方法。 也许你可以帮我解决这个问题。我不想使用Style.Theme。

修改

在这种情况下,创建一个完整的自定义视图(在AlertDialog中使用)似乎是最佳解决方案。感谢您提示Joachim

<?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 :(得分:0)

执行此操作的简单方法是创建样式,然后在创建时使用样式

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

然而,如果你因为某种原因不想这样做,我不认为有一个简单的方法。你可以设置progressdialogue的视图,但是你必须手动创建整个视图。

也许您可以使用.FindViewById获取背景视图并更改其背景颜色。虽然使用风格以外的其他东西感觉很糟糕,我可以问你为什么不想这样做?