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

Android Lollipop - Потяните, чтобы обновить

Я пытаюсь реализовать pull-to-refresh в Android. Я знаю, что есть SwipeRefreshLayout, но со всеми недавно созданными приложениями Google, такими как "Диск" (см. Приложение) для Lollipop, я заметил, что есть новый значок обновления, который появляется в представлении при нажатии. Я пробовал смотреть онлайн, но тщетно. Разве Android выпустил это как часть Material Design? Любые идеи о том, как его реализовать?

EDIT: Некоторые люди указали, как это дубликат Как реализовать Pull-to-refresh. Это не тот же вопрос. Вы увидите это, если вы правильно прочитали вопрос.

enter image description here

4b9b3361

Ответ 1

Это SwipeRefreshLayout. Версия 21 библиотеки поддержки включает в себя замену старого стиля.

Ответ 2

  • Загрузите последнюю библиотеку поддержки Lollipop SDK и Extras/Android.
  • Установить сборку проекта для Android 5.0 (в противном случае пакет поддержки может иметь ошибки с ресурсами)
  • Обновите свою версию libs/android-support-v4.jar до 21-й версии
  • Использовать android.support.v4.widget.SwipeRefreshLayout plus android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener

Подробное руководство можно найти здесь: http://antonioleiva.com/swiperefreshlayout/

Плюс для ListView Я рекомендую прочитать о canChildScrollUp() в комментариях;)

Ответ 3

Мне нравится это руководство лучше всего и его очень легко понять: 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); как только ваше освежение закончится.

Ответ 4

hi Если вы не разработали такой вид макета, пожалуйста, следуйте этому URL-адресу, я использовал его как замечательный.

https://github.com/stormzhang/SwipeRefreshLayoutDemo