Расположение индикатора выполнения за кнопкой

1

У меня есть Button которая определена в RelativeLayout следующим образом:

<Button
        android:id="@+id/search_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/current_location"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:paddingBottom="30dp"
        android:paddingTop="30dp"
        android:text="@string/search" />

Я хотел бы добавить ProgressBar за Button, который занимает то же самое пространство, что и Button, так что когда кнопка отключена (полупрозрачная), вы можете увидеть индикатор выполнения за ней. Как мне это сделать?

Теги:
button
relativelayout
progress-bar
layout

2 ответа

9
Лучший ответ

Для этого мне пришлось сначала определить кнопку в моем main.xml, а затем индикатор выполнения следующим образом:

<Button
    android:id="@+id/search_button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/current_location"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:paddingBottom="30dp"
    android:paddingTop="30dp"
    android:text="@string/search" />

<ProgressBar
    android:id="@+id/cooldown_bar"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@id/search_button"
    android:layout_below="@id/current_location"
    android:layout_marginBottom="6dp"
    android:layout_marginLeft="9dp"
    android:layout_marginRight="9dp"
    android:layout_marginTop="1dp"
    android:indeterminate="false"
    android:progressDrawable="@drawable/progress_bar" />

Затем, как только я инициализировал все компоненты GUI, мне пришлось вернуть кнопку перед индикатором выполнения:

searchButton.bringToFront();

Конечный результат

Кнопка при включении:

Изображение 174551

Кнопка при отключении с индикатором выполнения:

Изображение 174551

2

поместите это прямо перед кнопкой внутри относительной компоновки в вашем xml:

    <ProgressBar
    android:id="@+id/descriptive_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/current_location"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:paddingBottom="30dp"
    android:paddingTop="30dp"
     />

используя все те же атрибуты layotu и padding, мы можем убедиться, что View будет находиться в одном и том же месте и примерно одинакового размера (высота может отличаться из-за wrap_content). Я думаю, что если вы поместите индикатор прогресса сначала в файл макета, тогда кнопка должна появиться сверху.

Но также вы можете применять любую политику, которую вы хотите, с помощью view.setVisibility(visibility-ness) просто убедитесь, что всякий раз, когда вы делаете одно видимым, вы делаете другого невидимым.

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

  • 0
    Это помещает индикатор выполнения позади кнопки, но ширина индикатора выполнения больше, чем ширина кнопки. Кроме того, высота индикатора выполнения намного меньше.
  • 0
    Вы можете опубликовать картинку?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню