Я использую SwipeRefreshLayout, и все в порядке, когда Listview имеет несколько дочерних элементов. Проблема заключается в следующем: когда listView не имеет чили, он не показывает индикатор загрузки после вызова setRefreshing (true). Как это исправить?
SetRefreshing (true) не показывает индикатор
Ответ 1
На самом деле это показывает индикатор... за ActionBar!
Как я исправил это, было ниже:
Display display = getActivity().getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int height = size.y;
getSwipeRefreshLayout().setProgressViewOffset(false, -200, height / 9);
ИЗМЕНИТЬ
Выше уже не правильный ответ. Правильный ответ ниже:
getSwipeRefreshLayout().post(new Runnable() {
@Override public void run() {
getSwipeRefreshLayout().setRefreshing(true);
}
});
Ответ 2
Как это исправить?
Я столкнулся с той же проблемой. Мое исправление заключалось в том, чтобы предоставить пустой вид для ListView
, обернутый вокруг ScrollView
и a SwipeRefreshLayout
. Что-то ложь:
<android.support.v4.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@android:id/empty"
android:layout_height="match_parent" >
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<View
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>