Диалог прогресса не показывает счетчик в версии для Android 8.0, но он все еще работает - PullRequest
0 голосов
/ 02 марта 2019

В моем приложении диалог прогресса должен отображаться при нажатии кнопки.Теперь отображается диалоговое окно прогресса, но без счетчика или полосы загрузки (извините, я не уверен, как это называется)

Так выглядит мое диалоговое окно прогресса в реальном устройстве Android 8.0

This is how my progress dialog looks like in android 8.0 real device

Так выглядит мой диалог прогресса в Android 5.0

enter image description here

  private ProgressDialog progressDialog;

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
            progressDialog = new ProgressDialog(Login.this);
    }

         public void loginUser(View v) {
            final String Email = emailText.getText().toString();
            final String password = passwordText.getText().toString();

            progressDialog.setMessage("Logging in....");
            progressDialog.setCanceledOnTouchOutside(false);
            progressDialog.show();

            if (TextUtils.isEmpty(Email)) {
                emailText.setError("Email is required");
            }
            if (TextUtils.isEmpty(password)) {
                passwordText.setError("password is required");
            }
            if ((!TextUtils.isEmpty(Email)) && (!TextUtils.isEmpty(password))) {
                mAuth.signInWithEmailAndPassword(Email, password)
                        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                if (!task.isSuccessful()) {
                                    Toasty.error(getApplicationContext(), "Login Failed",
                                            Toast.LENGTH_SHORT, true).show();
                                    progressDialog.dismiss();
                                } else {
      Toasty.success(getApplicationContext(), "Login Success",
                                            Toast.LENGTH_SHORT, true).show();
                                    Intent intent = new Intent(Login.this, Admins.class);
                                    intent.putExtra("Email", emailText.getText().toString());
                                    startActivity(intent);
                  }
           }
     }

МожетКто-нибудь, помогите мне решить это?

1 Ответ

0 голосов
/ 02 марта 2019

ProgressDialog

устарел из SDK 26. Вы должны использовать

ProgressBar

Использование:

В свой макет добавьте вид:

<ProgressBar
   android:id="@+id/progressBar"
   style="?android:attr/progressBarStyle"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   app:layout_constraintTop_toTopOf="@+id/parent"
   app:layout_constraintBottom_toBottomOf="@+id/parent"
   app:layout_constraintLeft_toLeftOf="parent"
   app:layout_constraintRight_toRightOf="parent"
   android:layout_marginLeft="16dp"
   android:layout_marginRight="16dp"
   android:indeterminate="true"
   android:max="100"
   android:visibility="gone"/>

Объявите progressBar в своей деятельности

ProgressBar progressBar;

В onCreate получите представление

progressBar = findViewById(R.id.progressBar);

Когда вам нужно отобразить индикатор progressBar:

progressBar.setVisibility(View.VISIBLE);

Когда вам нужно его пропустить:

progressBar.setVisibility(View.GONE);

Для получения более подробной информации смотрите ProgressBar документы

Может быть полезно отключить взаимодействие с пользователем, когда ProgressBar.

РЕДАКТИРОВАТЬ

Отключениевзаимодействие

getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
            WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

Повторное включение взаимодействия:

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

РЕДАКТИРОВАТЬ 2

Вам не нужноскопировать ProgressDialog визуально в соответствии с шаблонами проектирования материалов ( индикаторы выполнения ).

РЕДАКТИРОВАТЬ 3

Вот пример того, что я сказалВам в комментариях.Это макет для ProgressBar внутри View

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_margin="16dp"
        android:visibility="visible"
        android:background="#EFEFEF">

        <TextView
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Things to do"
            android:textSize="30sp"
            android:layout_marginLeft="10dp"
            android:layout_marginStart="10dp"/>

        <ProgressBar
            android:id="@+id/progressBar"
            style="?android:attr/progressBarStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:indeterminate="true"
            android:max="100"
            android:visibility="visible"
            android:layout_below="@+id/title"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Please wait we are doing things..."
            android:layout_below="@+id/title"
            android:layout_toRightOf="@+id/progressBar"
            android:layout_toEndOf="@+id/progressBar"/>
    </RelativeLayout>

</android.support.constraint.ConstraintLayout>

. Он выдаст что-то вроде этого: How it looks

Вы можете установить высоту для API 21 иливыше:

android:elevation="10dp"

Как вы спросили в комментариях, это всего лишь пример, не рекомендация .Это не самая красивая раскладка, которую вы видите в жизни, но она даст вам север.

...