web-dev-qa-db-ja.com

Android Lollipop-プルして更新

プルトゥリフレッシュをAndroidに実装しようとしています。 SwipeRefreshLayoutがあることは知っていますが、Lollipop用のドライブ(添付を参照)などの新しく設計されたすべてのGoogleアプリでは、引っ張るとビューに表示される新しい更新アイコンがあることに気付きました。オンラインで探してみましたが、無駄でした。 Androidはマテリアルデザインの一部としてこれをリリースしましたか?それを実装する方法についてのアイデアはありますか?

編集:一部の人々は、これが Pull-to-refreshの実装方法 の複製であることを指摘しています。同じ質問ではありません。質問を適切に読めば表示されます。

enter image description here

26
gsb

これはSwipeRefreshLayoutです。サポートライブラリのバージョン21には、古いスタイルを置き換えるものが含まれています。

60
Ben Pye
  1. 最新のLollipop SDKおよびExtras/Androidサポートライブラリをダウンロードします
  2. プロジェクトのビルドターゲットをAndroid 5.0に設定します(そうしないと、サポートパッケージにリソースのエラーが発生する可能性があります)
  3. Libs/Android-support-v4.jarを21番目のバージョンに更新します
  4. Android.support.v4.widget.SwipeRefreshLayoutとAndroid.support.v4.widget.SwipeRefreshLayout.OnRefreshListenerを使用します

詳細なガイドはここにあります: http://antonioleiva.com/swiperefreshlayout/

さらに、ListViewの場合、コメントでcanChildScrollUp()について読むことをお勧めします;)

19
goRGon

私はこのガイドが一番好きで、本当に分かりやすいです: https://www.bignerdranch.com/blog/implementing-swipe-to-refresh/

  1. 次をgradleに追加します。

    compile 'com.Android.support:support-v4:22.2.0'

  2. スワイプを追加してレイアウトを更新します-swiperefreshlayoutの中央にリストビューまたはリサイクラービューを配置します。

        <ListView
            Android:id="@+id/activity_main_listview"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            >
        </ListView>
    
    </Android.support.v4.widget.SwipeRefreshLayout>
    
  3. メインアクティビティのコードを追加します。

    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);
    });
    }
    

    }

  4. MSwipeRefreshLayout.setRefreshing(false);を呼び出すことを忘れないでください。リフレッシュが終了したら。

7
Simon

こんにちは、このような種類のレイアウトを開発したくない場合は、このURLをフォローしてください。

https://github.com/stormzhang/SwipeRefreshLayoutDemo

4
Rajan Bhavsar
3
Jeff Mixon