【问题标题】:Change ProgressDialog color (lower API) Android更改 ProgressDialog 颜色(较低的 API)Android
【发布时间】:2017-07-20 08:56:19
【问题描述】:

你好在我的应用程序中我有简单的progressDialog。我使用一些简单的代码来管理它的颜色,但是低于 21 的 api 存在问题。

通常应该是这样的

但对于较低的 api 它看起来

有办法让它看起来像第一张图片吗?

我的progressDialog代码

 @Override
    public Dialog onCreateDialog(int dialogId) {
switch (dialogId) {
            case PLEASE_WAIT_DIALOG:
                final ProgressDialog dialog = new ProgressDialog(this,R.style.AppCompatAlertDialogStyle);
                dialog.setTitle(getResources().getString(R.string.dialogWysylka));
                dialog.setMessage(getResources().getString(R.string.dialogWysylkaDol));
                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                dialog.setCancelable(false);
                return dialog;
    }

和用于管理颜色的 xml:

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="colorAccent">@color/white</item>
    <item name="android:textColorPrimary">@color/white</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:background">@color/brownmuseum</item>
</style>

【问题讨论】:

    标签: android api colors customization progressdialog


    【解决方案1】:

    在 Android O 中,ProgressDialog 现已正式弃用。建议使用另一种方法

    此类在 API 级别 O 中已弃用。在 Activity 内使用 ProgressBar 等进度指示器,而不是使用此模式对话框。

    你可以使用

    <style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog">
        <item name="android:windowBackground">@android:color/transparent</item>
    
    </style>   
    

    以下API

    【讨论】:

    • 只用这个。
    • 如果我使用它,它不会像第一张图片一样 :)
    • 使用 ProgressDialog,你只会得到这样的结果。否则你需要创建一些自定义对话框
    【解决方案2】:

    试试这段代码获取 IndeterminateDrawable 和 setColorFilter。

    final ProgressDialog progress = new ProgressDialog(this);
    progress.setMessage(getString(R.string.progress_message));
    progress.setIndeterminate(true);
    progress.setCancelable(false);
    //if lower API 21
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        Drawable drawable = new ProgressBar(this).getIndeterminateDrawable().mutate();
        drawable.setColorFilter(ContextCompat.getColor(this, R.color.white),
                PorterDuff.Mode.SRC_IN);
        progress.setIndeterminateDrawable(drawable);
    }
    
    progress.show();
    

    【讨论】:

    • 嗯它不会改变任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 2014-08-19
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多