SwipeRefreshLayout за ActionBar

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

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

Solutions Collecting From Web of "SwipeRefreshLayout за ActionBar"

В версии 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 (boolean scale, int start, int end)

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

параметры

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

Вместо того, чтобы устанавливать 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">