스와이프하여 새로고침 사용자 인터페이스 패턴은 수직 스와이프를 감지하고 고유한 진행률 표시줄을 표시하고 앱에서 콜백 메서드를 트리거하는 SwipeRefreshLayout
위젯에서 전적으로 구현됩니다. 레이아웃 파일에 위젯을 ListView
또는 GridView
의 상위 요소로 추가하고 사용자가 스와이프할 때 호출되는 새로고침 동작을 구현하여 이 동작을 사용 설정합니다.
이 페이지에서는 기존 레이아웃에 위젯을 추가하는 방법을 보여줍니다. 또한 스와이프 동작을 사용할 수 없는 사용자가 외부 기기로 수동 업데이트를 트리거할 수 있도록 작업 모음 오버플로 영역에 새로고침 작업을 추가하는 방법도 보여줍니다.
SwipeRefreshLayout 종속 항목 추가
앱에서 SwipeRefreshLayout
를 사용하려면 build.gradle
파일에 다음 종속 항목을 추가합니다.
Groovy
dependencies { implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01" }
Kotlin
dependencies { implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01") }
SwipeRefreshLayout 위젯 추가
스와이프하여 새로고침하는 위젯을 기존 앱에 추가하려면 SwipeRefreshLayout
을 단일 ListView
또는 GridView
의 상위 요소로 추가합니다.
SwipeRefreshLayout
은 단일 ListView
또는 GridView
하위 요소만 지원합니다.
다음 예는 ListView
가 포함된 기존 레이아웃 파일에 SwipeRefreshLayout
위젯을 추가하는 방법을 보여줍니다.
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/swiperefresh" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" /> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
ListFragment
와 함께 SwipeRefreshLayout
위젯을 사용할 수도 있습니다. 레이아웃에 ID가 "@android:id/list"
인 ListView
가 포함되어 있다면 스와이프하여 새로고침하는 기능은 자동으로 지원됩니다. 하지만, 이러한 방식을 사용하여 ListView
를 명시적으로 선언하면 기본 ListFragment
뷰 구조가 대체됩니다. 기본 뷰 구조를 사용하려면 SwipeRefreshLayout
및 ListFragment
동작 일부를 재정의합니다.
작업 모음에 새로고침 작업 추가
스와이프 동작을 실행할 수 없는 사용자가 수동 업데이트를 트리거할 수 있도록 앱의 작업 모음에 새로고침 작업을 추가합니다. 예를 들어 접근성 요구사항이 있는 사용자는 키보드 및 D패드와 같은 외부 기기를 사용하여 작업 모음 작업을 트리거할 수 있습니다.
android:showAsAction=never
속성을 설정하여 새로고침 작업을 버튼이 아닌 메뉴 항목으로 추가합니다. 작업을 버튼으로 표시하면 사용자가 새로고침 버튼 작업이 스와이프하여 새로고침하는 작업과 다르다고 생각할 수 있습니다. 작업 모음에서 새로고침 작업을 덜 눈에 띄게 만들어 D패드 사용자가 찾을 수 있는 장소에 액세스 가능한 옵션을 유지하면서 사용자가 스와이프 동작으로 수동 업데이트를 실행하도록 유도할 수 있습니다.
다음 코드는 오버플로 영역에 스와이프하여 새로고침 작업을 추가하는 방법을 보여줍니다.
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_refresh" android:showAsAction="never" android:title="@string/menu_refresh"/> </menu>