У меня есть 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, так что когда кнопка отключена (полупрозрачная), вы можете увидеть индикатор выполнения за ней. Как мне это сделать?
Для этого мне пришлось сначала определить кнопку в моем 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();
Кнопка при включении:
Кнопка при отключении с индикатором выполнения:
поместите это прямо перед кнопкой внутри относительной компоновки в вашем 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)
просто убедитесь, что всякий раз, когда вы делаете одно видимым, вы делаете другого невидимым.
в этом случае я ошибаюсь в том, как они стекают по умолчанию в зависимости от их положения в файле (каким я мог быть, я не проверял его сейчас) и в случае, если вы не хотите перемещать индикатор выполнения чтобы поднять кнопку в файле, вы все равно можете добиться того же самого с точки зрения пользователей.