SwipeRefreshLayout
следует использовать всякий раз, когда пользователь может обновить содержимое представления с помощью жеста вертикальной прокрутки. Читать дальше
Итак, SwipeRefreshLayout
ведет себя как контейнер, поэтому внутри SwipeRefreshLayout
вы должны добавить ListView
или GridView
, чтобы заставить его работать, как вы можете видеть ниже:
Помните, что SwipeRefreshLayout
поддерживает только одного ListView
или GridView
дочернего элемента.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
А затем настройте элементы представления:
SwipeRefreshLayout swipeRefreshLayout;
ListView listView;
protected override void OnCreate(Bundle savedInstanceState)
{
// ...
listView = view.FindViewById<ListView>(Resource.Id.list);
swipeRefreshLayout = view.FindViewById<SwipeRefreshLayout>(Resource.Id.swipeRefreshLayout);
// Elevation helps users understand the relative importance of each element and focus their attention to the task at hand. (Optional)
// swipeRefreshLayout.Elevation = 10;
swipeRefreshLayout.Refresh += delegate (object sender, System.EventArgs e)
{
// logic...
};
// ...
}
Также вы можете запустить SwipeRefreshLayout
вручную, с помощью:
swipeRefreshLayout.Post(() => {
swipeRefreshLayout.Refreshing = true;
listView.Clickable = false;
});
// logic...
swipeRefreshLayout.Post(() => {
swipeRefreshLayout.Refreshing = false;
listView.Clickable = true;
});
Надеюсь, это поможет вам.