f71f509af0
Doc-in-progress inherited from xoogler's (unfinished) CL http://ag/427505 . See comments for staging location. Patch set 1 is the version inherited from the xoogler; PS2 is after my edits. Per a conversation with CB, I've removed the "ListFragment" doc, and just put in a note about that topic in the "add-swipe-refresh" doc. Change-Id: Id1a1294b15c5a7363f650ea13237948b0effbc40
136 lines
4.8 KiB
Plaintext
136 lines
4.8 KiB
Plaintext
page.title=Adding Swipe-to-Refresh To Your App
|
|
trainingnavtop=true
|
|
@jd:body
|
|
|
|
|
|
<div id="tb-wrapper">
|
|
<div id="tb">
|
|
|
|
<!-- table of contents -->
|
|
<h2>This lesson teaches you to</h2>
|
|
<ol>
|
|
<li><a href="#AddSwipeWidget">Add the SwipeRefreshLayout Widget</a>
|
|
<li><a href="#AddRefreshAction">Add a Refresh Action to the Action Bar</a>
|
|
</ol>
|
|
|
|
<!-- other docs (NOT javadocs) -->
|
|
<h2>You should also read</h2>
|
|
<ul>
|
|
<li>
|
|
<a href=
|
|
"{@docRoot}guide/topics/ui/accessibility/index.html">Accessibility</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="{@docRoot}training/basics/actionbar/index.html">Adding the Action
|
|
Bar</a>
|
|
</li>
|
|
</ul>
|
|
|
|
<h2>Sample Apps</h2>
|
|
|
|
<ul>
|
|
<li><a href="{@docRoot}samples/SwipeRefreshLayoutBasic/index.html">
|
|
SwipeRefreshLayoutBasic</a></li>
|
|
<li><a href="{@docRoot}samples/SwipeRefreshListFragment/index.html">
|
|
SwipeRefreshListFragment</a></li>
|
|
</ul>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<p>
|
|
The swipe-to-refresh user interface pattern is implemented entirely within
|
|
the {@link android.support.v4.widget.SwipeRefreshLayout} widget, which
|
|
detects the vertical swipe, displays a distinctive progress bar, and triggers
|
|
callback methods in your app. You enable this behavior
|
|
by adding the widget to your layout file as the parent of a {@link
|
|
android.widget.ListView} or {@link android.widget.GridView}, and implementing
|
|
the refresh behavior that gets invoked when the user swipes.
|
|
</p>
|
|
|
|
<p>
|
|
This lesson shows you how to add the widget to an existing layout. It also
|
|
shows you how to add a refresh action to the action bar overflow area, so
|
|
that users who may be unable to use the swipe gesture can trigger a manual
|
|
update with an external device.
|
|
</p>
|
|
|
|
<h2 id="AddSwipeWidget">Add the SwipeRefreshLayout Widget</h2>
|
|
<p>
|
|
To add the swipe to refresh widget to an existing app, add {@link
|
|
android.support.v4.widget.SwipeRefreshLayout} as the parent
|
|
of a single {@link android.widget.ListView} or {@link
|
|
android.widget.GridView}. Remember that {@link
|
|
android.support.v4.widget.SwipeRefreshLayout} only supports a single {@link
|
|
android.widget.ListView} or {@link android.widget.GridView} child.
|
|
</p>
|
|
|
|
<p>
|
|
The following example demonstrates how to add the {@link
|
|
android.support.v4.widget.SwipeRefreshLayout} widget to an existing layout
|
|
file containing a {@link android.widget.ListView}:
|
|
</p>
|
|
|
|
<pre><android.support.v4.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" />
|
|
|
|
</android.support.v4.widget.SwipeRefreshLayout></pre>
|
|
|
|
<p>
|
|
You can also use the {@link android.support.v4.widget.SwipeRefreshLayout}
|
|
widget with a {@link android.support.v4.app.ListFragment}. If the layout
|
|
contains a {@link android.widget.ListView} with the ID
|
|
<code>"@android:id/list"</code>, the swipe-to-refresh functionality is
|
|
automatically supported. However, explicitly declaring the {@link
|
|
android.widget.ListView} in this way supersedes the default {@link
|
|
android.support.v4.app.ListFragment} view structure. If you want to use the
|
|
default view structure, you will have to override parts of the {@link
|
|
android.support.v4.widget.SwipeRefreshLayout} and {@link
|
|
android.support.v4.app.ListFragment} behavior. For an example of how to do
|
|
this, see the <a href=
|
|
"{@docRoot}samples/SwipeRefreshListFragment/index.html">SwipeRefreshListFragment</a>
|
|
sample app.
|
|
</p>
|
|
|
|
<h2 id="AddRefreshAction">Add a Refresh Action to the Action Bar</h2>
|
|
|
|
<p>
|
|
You should add a refresh action to your app's action bar to ensure that
|
|
users who may not be able to perform a swipe gesture can still trigger a
|
|
manual update. For example, users with accessibility issues can trigger
|
|
action bar actions using external devices, such as keyboards and D-pads.
|
|
</p>
|
|
|
|
<p>
|
|
You should add the refresh action as a menu item,
|
|
rather than as a button, by setting the attribute
|
|
<code>android:showAsAction=never</code>. If you display the action as a
|
|
button, users may assume that the refresh button action is different from the
|
|
swipe-to-refresh action. By making the refresh action less conspicuous in the
|
|
action bar, you can encourage users to perform manual updates with the swipe
|
|
gesture while still maintaining the accessible option in a place where D-pad
|
|
users would look for it.
|
|
</p>
|
|
|
|
<p>
|
|
The following code demonstrates how to add the swipe-to-refresh action to the
|
|
overflow area:
|
|
</p>
|
|
|
|
<pre><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></pre>
|