web-dev-qa-db-ja.com

AndroidでリストビューをスクロールしているときにActionBarを非表示にする方法は?

ListViewActionBarを含むGUIを作成する必要があります。これらは、下にスクロールすると上にスクロールすると非表示になり、再表示する必要があります。

次のガイドは役に立たなかった。

次のようなものが必要です。

enter image description here

15
user4789408

この動作を使用してリストを取得する場合は、次のことを行う必要があります。

  • _compile 'com.Android.support:design:22.2.0'_を使用して設計サポートライブラリを追加します
  • _app:layout_scrollFlags="scroll|enterAlways"_を定義する必要があるツールバーでCoordinatorLayoutを使用します
  • RecyclerViewの代わりにListViewを使用します。 hereListViewGridViewは、API> 21でのみCoordinatorLayoutで予期される動作をします。この場合、setNestedScrollingEnabled(true);を使用する必要があります

公式ブログ投稿 はこのケースを示しています:

_<Android.support.design.widget.CoordinatorLayout
        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">

     <! -- Your Scrollable View -->
    <Android.support.v7.widget.RecyclerView
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <Android.support.design.widget.AppBarLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content">
          <Android.support.v7.widget.Toolbar
                  ...
                  app:layout_scrollFlags="scroll|enterAlways">


     </Android.support.design.widget.AppBarLayout>
</Android.support.design.widget.CoordinatorLayout>
_
27

Googleの新しいサポートデザインライブラリを使用することをお勧めします。

依存関係にそれを含めます:

compile 'com.Android.support:design:22.2.0'

そして、AppBarLayoutNestedScrollViewと一緒に使用します。

Toolbarを定義するapp:layout_scrollFlags="scroll|enterAlways"は、スクロールすると消え、上にスクロールするとすぐに戻ることを示します(つまり、上にスクロールする必要はありません)。

<Android.support.design.widget.AppBarLayout
    Android:id="@+id/appbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:background="?attr/colorPrimary"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:layout_scrollFlags="scroll|enterAlways" />

</Android.support.design.widget.AppBarLayout>

<Android.support.v4.widget.NestedScrollView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_gravity="fill_vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <FrameLayout
        Android:id="@+id/container"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"/>

</Android.support.v4.widget.NestedScrollView>
8
Kuba Spatny

[CoordinatorLayout]: https://developer.Android.com/reference/Android/support/design/widget/CoordinatorLayout.html を使用すると、co -子ビュー間のオリダネーション。別のビューで観察された動作(ListView-> scroll)があるときに、あるビューでact(AppBarLayout-> scrolling)のようになります。

  1. ListviewをnestedScrollingEnabledにし、API 21で機能します。

    Android:nestedScrollingEnabled="true"
    
  2. レイアウトの動作をアプリバーのスクロールにトリガーします。

    Android:nestedScrollingEnabled="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    
  3. 表示/非表示/スクロール、AppBarLayout内への配置、およびスクロールフラグの有効化に必要なレイアウト(ToolBar/TabLayout/any)。

    app:layout_scrollFlags="scroll|enterAlways"
    
3
Annada

このタスクにはCoordinatorLayoutを使用する必要があります。これは、サポートデザインライブラリの一部です。 ここCoordinatorLayoutおよびアプリバーセクションで、例を見つけることができます

1
Blackbelt