Ответ 1
Это SwipeRefreshLayout
. Версия 21 библиотеки поддержки включает в себя замену старого стиля.
Я пытаюсь реализовать pull-to-refresh в Android. Я знаю, что есть SwipeRefreshLayout
, но со всеми недавно созданными приложениями Google, такими как "Диск" (см. Приложение) для Lollipop, я заметил, что есть новый значок обновления, который появляется в представлении при нажатии. Я пробовал смотреть онлайн, но тщетно.
Разве Android выпустил это как часть Material Design? Любые идеи о том, как его реализовать?
EDIT: Некоторые люди указали, как это дубликат Как реализовать Pull-to-refresh. Это не тот же вопрос. Вы увидите это, если вы правильно прочитали вопрос.
Это SwipeRefreshLayout
. Версия 21 библиотеки поддержки включает в себя замену старого стиля.
Подробное руководство можно найти здесь: 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); как только ваше освежение закончится.
hi Если вы не разработали такой вид макета, пожалуйста, следуйте этому URL-адресу, я использовал его как замечательный.
И буквальный значок находится здесь: