Android Lollipop-потяните, чтобы обновить
Я пытаюсь реализовать pull-to-refresh в Android. Я знаю, что есть SwipeRefreshLayout
, но со всеми новыми разработанными приложениями Google, такими как Drive (см. приложение) для Lollipop, я заметил, что есть новый значок обновления, который появляется в представлении при нажатии. Я попытался посмотреть его в интернете, но тщетно.
Выпустила ли Android это как часть материального дизайна? Есть идеи, как его реализовать?
EDIT: некоторые люди указали, что это дубликат Как реализовать Pull-to-refresh . Это не тот же самый вопрос. Вы увидите это, если правильно прочтете вопрос.
5 ответов:
- загрузите последнюю версию Lollipop SDK и дополнения / библиотека поддержки Android
- установите цель сборки проекта на Android 5.0 (в противном случае пакет поддержки может иметь ошибки с ресурсами)
- обновите свои библиотеки / android-support-v4.jar до 21-й версии
- Используйте android.поддержка.v4.штучка.SwipeRefreshLayout плюс android.поддержка.v4.штучка.SwipeRefreshLayout.OnRefreshListener
Подробное руководство можно найти здесь: http://antonioleiva.com/swiperefreshlayout/
Плюс для ListView рекомендую прочитать о canChildScrollUp() в комментариях;)
Мне больше всего нравится это руководство, и его действительно легко понять: https://www.bignerdranch.com/blog/implementing-swipe-to-refresh/
Добавьте в gradle следующее:
compile 'com.android.support:support-v4:22.2.0'
Добавьте салфетку для обновления макета-поместите в listview или recyclerview в середине swiperefreshlayout:
<ListView android:id="@+id/activity_main_listview" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView> </android.support.v4.widget.SwipeRefreshLayout>
Добавьте в свой код для mainactivity:
public class MainActivity extends Activity { ListView mListView; SwipeRefreshLayout mSwipeRefreshLayout; Adapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.acivity_main); SwipeRefreshLayout mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.activity_main_swipe_refresh_layout); mListView = findViewById(R.id.activity_main_list_view); mListView.setAdapter(new ArrayAdapter<String>(){ String[] fakeTweets = getResources().getStringArray(R.array.fake_tweets); mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, fakeTweets) listView.setAdapter(mAdapter); }); }
}
Не забудь позвонить. mSwipeRefreshLayout.setRefreshing (false); как только ваше освежение закончится.