когда индикатор показывает, что это изменило мой дизайн интерфейса - PullRequest
0 голосов
/ 09 марта 2019

Я ожидал, что мой индикатор выполнения работает следующим образом:

enter image description here

без изменения дизайна интерфейса.

Мой макет похож на:

enter image description here

после отображения индикатора выполнения становится:

enter image description here

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

<RelativeLayout 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="wrap_content"
    tools:context=".Login">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingLeft="24dp"
        android:paddingTop="56dp"
        android:paddingRight="24dp">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="72dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginBottom="24dp"
            android:src="@drawable/cenviro" />

        <com.rengwuxian.materialedittext.MaterialEditText
            android:id="@+id/input_email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp"
            android:hint="Email"
            android:inputType="textEmailAddress"
            app:met_floatingLabel="highlight" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_margin="16dp"
            android:visibility="gone"
            android:id="@+id/relativeLayout">

            <ProgressBar
                android:id="@+id/progressBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="20dp"
                android:indeterminate="true"
                android:indeterminateDrawable="@drawable/progress"
                android:max="100"/>

            <TextView
                android:id="@+id/title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Logging in..."
                android:textSize="20sp"
                android:layout_marginLeft="10dp"
                android:layout_marginStart="10dp"
                android:layout_marginTop="10dp"
                android:layout_toRightOf="@+id/progressBar"/>

        </RelativeLayout>

        <com.rengwuxian.materialedittext.MaterialEditText
            android:id="@+id/input_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp"
            android:hint="Password"
            android:inputType="textPassword"
            app:met_floatingLabel="highlight" />

как отобразить индикатор выполнения без изменения интерфейса, как на первом изображенном мной изображении?

Ответы [ 4 ]

1 голос
/ 09 марта 2019

Добавьте эту раскладку под кнопкой входа в систему и удалите раскладку индикатора выполнения.

<RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="16dp"
            android:visibility="gone"
            android:id="@+id/relativeLayout">

            <ProgressBar
                android:id="@+id/progressBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="20dp"
                android:layout_centerInParent="true"
                android:indeterminate="true"
                android:indeterminateDrawable="@drawable/progress"
                android:max="100"/>

            <TextView
                android:id="@+id/title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Logging in..."
                android:textSize="20sp"
                android:layout_centerInParent="true"
                android:layout_marginLeft="10dp"
                android:layout_marginStart="10dp"
                android:layout_marginTop="10dp"
                android:layout_toRightOf="@+id/progressBar"/>

        </RelativeLayout>
0 голосов
/ 09 марта 2019

Прежде всего, почему ваш родительский макет является RelativeLayout, а затем весь контент находится внутри LinearLayout?

Затем в LinearLayout два представления не могут накладываться друг на друга, поэтому вы должны установить ProgressBarRelativeLayout за пределами LinearLayout.

Попробуйте изменить макет следующим образом:

<RelativeLayout 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=".Login">

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_margin="16dp"
        android:visibility="gone"
        android:id="@+id/relativeLayout">

        <ProgressBar
            android:id="@+id/progressBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:indeterminate="true"
            android:indeterminateDrawable="@drawable/progress"
            android:max="100"/>

        <TextView
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Logging in..."
            android:textSize="20sp"
            android:layout_marginLeft="10dp"
            android:layout_marginStart="10dp"
            android:layout_marginTop="10dp"
            android:layout_toRightOf="@+id/progressBar"/>

    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingLeft="24dp"
        android:paddingTop="56dp"
        android:paddingRight="24dp">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="72dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="24dp"
        android:src="@drawable/cenviro" />

    <com.rengwuxian.materialedittext.MaterialEditText
        android:id="@+id/input_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:hint="Email"
        android:inputType="textEmailAddress"
        app:met_floatingLabel="highlight" />

    <com.rengwuxian.materialedittext.MaterialEditText
        android:id="@+id/input_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:hint="Password"
        android:inputType="textPassword"
        app:met_floatingLabel="highlight" />

Затем вы использовали android:centerInParent = "true", который не действует внутри LinearLayout.

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

Вы используете индикатор выполнения в центре адреса электронной почты и пароля, и по этой причине, когда индикатор выполнения становится видимым, pt перемещает представление пароля ниже представления пароля.

Вы можете использовать индикатор выполнения по умолчанию, напримерthis (Согласно вашему исключению Image)

   ProgressDialog progressDialog = new ProgressDialog(activityCon);
    progressDialog.setMessage("Logging In...");
    progressDialog.setCancelable(false);
    progressDialog.setCanceledOnTouchOutside(false);
    progressDialog.show();

Скрыть, если (progressDialog! = null) progressDialog.dismiss ();

Надеюсь, это решит вашу проблему: -)

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

удалите progressbar из вашего XML-файла, затем используйте progressdialog в вашем Java-файле, например

при запуске задачи

 private ProgressDialog dialog;
 dialog = new ProgressDialog(activity);
 dialog.setMessage("Doing something, please wait.");
 dialog.show();

при ее завершении

 if (dialog.isShowing()) {

        dialog.dismiss();
    }
...