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

Показать прогрессдиалог без текста Android

Android 2.3.3

У меня есть progressdialog, который показывает, Загрузка.. как текст. Вот код для progressdialog.

progressDialog = new ProgressDialog(mContext);      
            progressDialog.setIndeterminate(true);
            progressDialog.setMessage("Loading...");
            progressDialog.show();

Если я удаляю строку progressDialog.setMessage("Loading...");, я получаю прогрессдиалог слева и пустой прямоугольник справа, который занимает ширину родителя.

Я хочу отобразить только progressdialog, выровненный по центру. Пожалуйста, обратитесь к изображениям ниже..

Это то, что у меня есть...

enter image description here

Это то, что я хочу...

enter image description here

Может кто-нибудь мне помочь?

4b9b3361

Ответ 1

Попробуйте это 1.Создайте метод, подобный этому:

       public static ProgressDialog createProgressDialog(Context mContext) {
           ProgressDialog dialog = new ProgressDialog(mContext);
           try {
                   dialog.show();
           } catch (BadTokenException e) {

           }
           dialog.setCancelable(false);
           dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
           dialog.setContentView(R.layout.progressdialog);
           // dialog.setMessage(Message);
           return dialog;
   }

//Xml Layout:

   <?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/progressBar1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerInParent="true" />

   </RelativeLayout>

и вызовите этот метод везде, где хотите:

       if (progressDialog == null) {
       progressDialog = Utils.createProgressDialog(Login.this);
       progressDialog.show();
       } else {
       progressDialog.show();
       }

Ответ 2

Если вам пришла ошибка: "requestFeature() must be called before adding content", решение должно вызвать progressDialog.show() ДО того, как вы вызываете progressDialog.setContentView(R.layout.progressdialog).

Ответ 3

вы можете добавить стиль ниже в style.xml

<style name="progress_bar_style">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowTitleStyle">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="android:backgroundDimEnabled">false</item>
    <item name="android:background">@android:color/transparent</item>
</style>

где вы добавляете любой цвет в файл color.xml.

Ответ 4

Вы можете использовать:

Progress progress = new ProgressDialog(getActivity(), android.support.v4.app.DialogFragment.STYLE_NO_TITLE);

При необходимости добавьте в Gradle зависимости

compile 'com.android.support:support-v4:22.2.0'

Ответ 5

Работайте и смотрите хорошо на дизайн материала с акцентом цвета (если у вас есть)

Попытка усложнить работу как с версией версии 5.0, так и ниже. И решение состоит в том, чтобы сделать это с диалогом вместо прогресса.

в папке макета создайте файл aux_progress_spinner.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:background="@android:color/transparent"
              android:gravity="center"
              android:orientation="vertical" >

    <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@android:color/transparent"
        />

</LinearLayout>

Создайте функцию где-нибудь... пусть Utils.class

   public static Dialog LoadingSpinner(Context mContext){
        Dialog pd = new Dialog(mContext, android.R.style.Theme_Black);
        View view = LayoutInflater.from(mContext).inflate(R.layout.aux_progress_spinner, null);
        pd.requestWindowFeature(Window.FEATURE_NO_TITLE);
        pd.getWindow().setBackgroundDrawableResource(R.color.transparent);
        pd.setContentView(view);
        return pd;
    }

В вашем фрагменте/вызове активности:

 private Dialog progress_spinner;
 progress_spinner = Utils.LoadingSpinner(mContext);   

 //------ Where you want it ------
 progress_spinner.show();

 //------- Dismiss it --------
 progress_spinner.dismiss();

Дополнительно: добавьте простой CountDownTimer, чтобы проверить, как он выглядит

        new CountDownTimer(1000,1000){

            @Override public void onTick(long millisUntilFinished) {

            }

            @Override public void onFinish() {
                progress.dismiss();
            }
        }.start();

Ответ 7

вы можете использовать:

progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

и если вы не хотите названия, вы можете:

progressDialog.setTitle(null);

Ответ 8

Ответ MuraliGanesan верен, но я использую только Dialog, а не ProgressDialog, чтобы избежать "requestFeature() необходимо вызвать перед добавлением содержимого" исключение "

Ответ 9

Вы можете сделать это, просто создав один класс, который расширяет класс Dialog:

Скажем, я создал ниже класс:

public class TransparentProgressDialog extends Dialog {

    public ImageView iv;

    public TransparentProgressDialog(Context context, int resourceIdOfImage) {
        super(context, R.style.TransparentProgressDialog);
        WindowManager.LayoutParams wlmp = getWindow().getAttributes();
        wlmp.gravity = Gravity.CENTER_HORIZONTAL;
        getWindow().setAttributes(wlmp);
        setTitle(null);
        setCancelable(false);
        setOnCancelListener(null);
        LinearLayout layout = new LinearLayout(context);
        layout.setOrientation(LinearLayout.VERTICAL);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        iv = new ImageView(context);
        iv.setImageResource(resourceIdOfImage);
        layout.addView(iv, params);
        addContentView(layout, params);
    }

    @Override
    public void show() {
        super.show();
        RotateAnimation anim = new RotateAnimation(0.0f, 360.0f , Animation.RELATIVE_TO_SELF, .5f, Animation.RELATIVE_TO_SELF, .5f);
        anim.setInterpolator(new LinearInterpolator());
        anim.setRepeatCount(Animation.INFINITE);
        anim.setDuration(3000);
        iv.setAnimation(anim);
        iv.startAnimation(anim);
    }
}

Поместите TransparentProgressDialog в style.xml:

      @ноль       @android: Цвет/прозрачный       правда       @ноль       @ноль       @android: стиль /Animation.Dialog       stateUnspecified | adjustPan       правда       @android: Цвет/прозрачный   

Теперь вы можете поместить любое изображение прогресса, которое будет распространяться:

TransparentProgressDialog pDialog = new TransparentProgressDialog(mContext, R.drawable.progress);
pDialog.show();

Что это.

Ответ 10

Эта работа для меня в MonoDroid:

progressDialog.SetMessage((string)null);

Попробуйте это в java:

progressDialog.setMessage(null);

Ответ 11

ProgressDialog.show(это, null, "", true);

Ответ 12

На основе ответа MuraliGanesan я создал подкласс progressDialog.

public class LoadingDialog extends ProgressDialog {

    public LoadingDialog(Context context) {
        super(context);
    }

    @Override
    public void show() {
        super.show();
        setCancelable(false);
        getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        setContentView(R.layout.custom_progress_dialog);
    }
}

Также вам нужно создать custom_progress_dialog.xml в res/layout

<?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:background="@android:color/transparent"
    android:layout_gravity="center">

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />

</RelativeLayout>

И вы используете его так просто, как это:

LoadingDialog dialog = new LoadingDialog(this);
dialog.show();
:
:
dialog.dismiss();