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

SwipeRefreshLayout за ActionBar

При использовании SwipeRefreshLayout в сочетании с оверлейным режимом ActionBar анимация загрузки будет отображаться за панелью действий, делая ее почти невидимой.

Есть ли что-нибудь, что я могу сделать, чтобы показать его поверх панели действий?

4b9b3361

Ответ 1

В версии Material Design библиотеки appcompat-v7 (v21.0.0) SwipeRefreshLayout получает метод установки смещения Прогресс выполнения.

https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html#setProgressViewOffset(boolean,%20int,%20int)

public void setProgressViewOffset (булевская шкала, int start, int end)

Позиция начала и останова индикатора обновления всегда располагается вблизи верхней части освежающего содержимого. Эта позиция является согласованным местоположением, но может быть отрегулирована в любом направлении в зависимости от наличия или отсутствия панели инструментов или панели действий.

Параметры

Шкала

Установите значение "Истина", если нет представления в более высоком порядке z, чем в случае, когда установлен индикатор производительности.

start Смещение в пикселях от вершины этого представления, на котором должен появиться счетчик прогресса.

end Смещение в пикселях от вершины этого вида, при котором ускоритель хода должен успокоиться после успешного жестового салфетки.

Ответ 2

Попробуйте этот код:

int top_to_padding=100;
swipe_refresh_layout.setProgressViewOffset(false, 0,top_to_padding);

Я надеюсь, что его работа для вас.

Ответ 3

ответ Виджая Раджпута работает для меня, но проблема была только на Киткате или на высоте, поэтому я включил:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { swipeLayout.setProgressViewOffset(false, 0,100); }

Ответ 4

EDIT

Это было лучшее решение перед v21 библиотеки appcompat-v7. Если вы используете v21 или новее, проверьте одобренный ответ. Если вы используете appcompat-v7 < 21 API это все равно поможет вам.


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

Чтобы облегчить для всех, я выпустил библиотеку с внедренной маркой. Взгляните на это: https://github.com/Naroh091/SwipeRefreshLayoutOverlay

Надеюсь, что это поможет!

Ответ 5

В настоящее время я сталкивался с этим, когда обновлял свою зависимость от appomppat 19.1.0 до 21.0.0 и не делал никаких изменений кода.

Это действительно известная проблема с SwipeRefreshLayout в appcompat 21.0.0.

Посмотрите здесь обходное решение: https://code.google.com/p/android/issues/detail?id=77712

Ответ 6

Вместо того, чтобы устанавливать paddingTop на SwipeRefreshLayout, установка layout_marginTop заставит индикатор выполнения видимым:

<android.support.v4.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="?android:attr/actionBarSize">