Подтвердить что ты не робот

Использование пользовательского ProgressDialog android

Я использую пользовательский ProgressDialog в своем приложении, я могу сделать его обычным, но я также хочу удалить верхнюю границу или окно ProgressDialog. В styles.xml я определяю customDialog как   

<style name="AppTheme" parent="android:Theme.Light" />

<style name="CustomDialog" parent="@android:style/Theme.Dialog">
    <item name="android:background">#7BC047</item>
    <item name="android:textColor">#FFFFFF</item>
    <item name="android:windowBackground">@null</item>
     <item name="android:windowFrame">@null</item>
</style>

Для удаления родительского окна я устанавливаю windowBackground на null и windowFrame на null, но это не работает для меня. В настоящее время мой пользовательский диалог прогресса выглядит так, как показано на рисунке ниже enter image description here

Я использую этот код, чтобы установить стиль ProgressDialog.

 private void showProgressDialog() {
    progressDialog = new ProgressDialog(this,R.style.CustomDialog);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    progressDialog.setMessage("Logging in. Please wait.");
    progressDialog.show();
}

Итак, помогите мне в этом вопросе, любая помощь должна быть действительно оценена.

4b9b3361

Ответ 1

В этом ответе не рассматривается проблема, указанная в вопросе, но при поиске того, как реализовать настраиваемый диалог прогресса, это единственная ссылка, указывающая на SO. Тем не менее, я нашел прохладный и простой в использовании пользовательский диалог прогресса с помощью определенного Maksym Dybarskyi на этой ссылке.

Все кредиты отправляются создателю, а не мне. Просто поделитесь

Все, что вам нужно сделать, это добавить это в свои зависимости:

dependencies {
...
   compile 'com.github.d-max:spots-dialog:[email protected]'
}

И затем пользовательский стиль:

<style name="Custom" parent="android:Theme.DeviceDefault.Dialog">
    <item name="DialogTitleAppearance">@android:style/TextAppearance.Medium</item>
    <item name="DialogTitleText">Please Wait</item>
    <item name="DialogSpotColor">@android:color/holo_orange_dark</item>
    <item name="DialogSpotCount">8</item>
</style>

Наконец, в вашем коде выполните следующее:

private AlertDialog progressDialog;
progressDialog = new SpotsDialog(mContext, R.style.Custom);

//Am using it in an AsyncTask. So in  my onPreExecute, I do this:
public void onPreExecute() {
  super.onPreExecute();
  progressDialog.show();
  ...
 }

//dismiss in onPostExecute
public void onPostExecute(){
   progressDialog.dismiss();
 } 

Результат:

введите описание изображения здесь

Желтые точки перемещаются слева направо, и вы можете изменить количество точек в стилях

Ответ 2

Я знаю, что довольно поздно ответить, но я отвечу в любом случае,

Dialog dialog = new  Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_login);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

Ответ 3

Просто проверьте использование имени активности в диалоговом окне диалога конструктора,

 progressDialog = new ProgressDialog(Activity.this,R.style.CustomDialog);

Ответ 4

Добавьте это в стиль

<item name="android:background">@android:color/transparent</item>

<item name="android:windowBackground">@android:color/transparent</item>

Ответ 5

Добавьте это в свой CustomDialog в styles.xml:

<item name="android:alertDialogStyle">@style/CustomAlertDialogStyle</item>

И этот style:

 <style name="CustomAlertDialogStyle" >
    <item name="android:bottomBright">@android:color/transparent</item>
    <item name="android:bottomDark">@android:color/transparent</item>
    <item name="android:bottomMedium">@android:color/transparent</item>
    <item name="android:centerBright">@android:color/transparent</item>
    <item name="android:centerDark">@android:color/transparent</item>
    <item name="android:centerMedium">@android:color/transparent</item>
    <item name="android:fullBright">@android:color/transparent</item>
    <item name="android:fullDark">@android:color/transparent</item>
    <item name="android:topBright">@android:color/transparent</item>
    <item name="android:topDark">@android:color/transparent</item>
</style>

Ответ 6

<style name="CustomDialog" parent="Theme.AppCompat.Light.Dialog">
   <item name="android:background">#7BC047</item>
   <item name="android:textColor">#FFFFFF</item>
   <item name="android:windowBackground">@color/colorTransparent</item>
</style>

Это сделало работу за меня.

Ответ 7

Я использую пользовательский ProgressDialog в моем приложении. Для этого мы должны выполнить некоторые шаги, которые заключаются в следующем.

Шаг 1 Создайте XML-макет custom_progress.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:padding="@dimen/dp_size_10"
    android:layout_height="match_parent">
<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:indeterminateTint="@color/colorPrimary"
    android:layout_centerInParent="true"/>
</RelativeLayout>

Шаг 2 Создайте файл Java для этого настраиваемого диалога.

package com.example.customeprogress;
import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;

public class CustomProgressDialogue extends Dialog {
    public CustomProgressDialogue(Context context) {
        super(context);

        WindowManager.LayoutParams wlmp = getWindow().getAttributes();

        wlmp.gravity = Gravity.CENTER_HORIZONTAL;
        getWindow().setAttributes(wlmp);
        setTitle(null);
        setCancelable(false);
        setOnCancelListener(null);
        View view = LayoutInflater.from(context).inflate(
                R.layout.custom_progress, null);
        setContentView(view);
    }
}

Шаг 3 Создайте объект этого пользовательского класса в своем классе активности java и инициализируйте его следующим образом: используйте объект для show() или dismiss()

CustomProgressDialogue object = new CustomProgressDialogue (this);

и показать этот диалог, используя.

object.show(); и отклонил его, используя object.dismiss();

Результат вывода. смотрите здесь

Ответ 8

Это не может быть подходящим ответом на вышеуказанный вопрос. Но это интересно и я подумал добавить сюда.

(Я не могу комментировать мою текущую репутацию)

Проверьте эту ссылку

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