アプリのスクリーンショット 1と スクリーンショット 2
問題は基本的に次のとおりです。ViewPager に layout_behaviour を設定しているにもかかわらず、PagerTitleStrip と RecyclerView がツールバーの下に表示されます。
もっと詳しく:
以下のレイアウトを使用するメイン アクティビティがあり、そこからフラグメントを起動します。CoordinatorLayout + ViewPager と他のすべての凝ったものを試す前に、フラグメントを表示する FrameLayout を用意しました。しかし、私は私が使いたいと決めました
app:layout_scrollFlags="scroll|enterAlways"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
リサイクルビューをスクロールするとツールバーが消えるようにします。FrameLayout には、ツールバーの下にある recyclerView の位置を修正できる動作がないことがオンラインでわかったので、フラグメントを管理するために ViewPager + CoordinatorLayout に変更しました。
ただし、これによりいくつかの問題が発生しました。私が達成したいのは - PagerTitleStrip が添付されたツールバーです。スクロールするとツールバーが消え、理想的には PagerTitleStrip が表示されたままになります。しかし、Navigation Drawer を引き続き機能させたいのですが、機能しません。まるで存在しない。
さて、この最初のレイアウトでは実際に上記のすべての機能が動作していますが、問題はストリップがツールバーの下にあり、スクロール時にツールバーが非表示にならないと表示されないことです。引き出しが動作します。残念ながら、リサイクラーのビュー項目はツールバーの下に部分的に隠されています - 私が設定したにもかかわらず、画面の正しい位置からスクロールを開始しません - appbar_scrolling_view_behavior
メインアクティビティが膨張するための m_drawerlayout.xml のレイアウト:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.v4.view.PagerTitleStrip
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:layout_gravity="top"
android:textSize="15sp"
android:textColor="@color/tealfifty"
android:background="@color/teal">
</android.support.v4.view.PagerTitleStrip>
</android.support.v4.view.ViewPager>
<ListView
android:id="@+id/drawer_list"
android:background="@color/tealDark"
android:cacheColorHint="@android:color/transparent"
android:choiceMode="singleChoice"
android:divider="@drawable/list_divider"
android:dividerHeight="1dp"
android:layout_width="280dp"
android:layout_height="match_parent"
android:layout_gravity="start"/>
</android.support.v4.widget.DrawerLayout>
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/app_bar"/>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
そして、これは私の app_bar.xml のコードです
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/top_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/teal"
app:theme="@style/ToolbarTheme"
app:popupTheme="@style/Green.Overlay.LightPopup"
app:layout_scrollFlags="scroll|enterAlways" >
<Spinner android:id="@+id/spinner"
android:layout_gravity="right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:paddingRight="20dp"
/>
</android.support.v7.widget.Toolbar>
要素を他のコンポーネントの内外に移動しようとしましたが、成功しませんでした。たとえば、ツールバーに添付された PagerTitleStrip を作成し、AppBar レイアウト内に PagerTitleStrip をネストする必要がある 1 つの動作を共有することは論理的に思えますが、PagerTitleStrip は ViewPager の直接の子でなければなりません...このすべて?私はこれらすべてのデザイン機能に不慣れで、成功せずに多くの調査を行いました。ここには同様のトピックがありますが、必要なものはまったくありません。他の基本的なトピックと比較して、私が上でやろうとしていることについてインターネット上にはほとんど何もないようです (いくつかあります)。
タブがないのになぜ ViewPager を使っているのか不思議に思っている人がいれば、それは言ったように、FrameLayout には消えるツールバーを正しく使うための動作がなく、それが私が見つけた良い使い方だからです。また、NestedScrollView を使用できることも確認しましたが、これまで使用したことがありません... ViewPagerTitle を使用する可能性があるため、フラグメントの ViewPager に制限されていると思います。