Scrolling Techniques 、Material Designで説明されている、コンテンツが重複する柔軟なスペースのいずれかを実装しようとしています。
コンテンツが重複する柔軟なスペース
コンテンツはアプリバーに重ねることができます。
動作:
アプリバーの開始位置は、コンテンツの背後に配置する必要があります。上方向にスクロールすると、コンテンツがオーバーラップしなくなるまで、アプリバーはコンテンツよりも速くスクロールするはずです。所定の位置に固定されると、アプリバーが持ち上がり、コンテンツが下にスクロールできるようになります。
ただし、問題は、AppBarのタイトルが展開されると下にスクロールし、重複するコンテンツの下に隠れることです。
ここで、ツールバーは重複するCardViewの下に隠れています。
アプリバーが折りたたまれると、ツールバー、したがってタイトルが下から上にスライドします。
これが私のコードです:
activity-main.xml
<Android.support.design.widget.CoordinatorLayout
...
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<Android.support.design.widget.AppBarLayout
Android:layout_width="match_parent"
Android:layout_height="200dp"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<Android.support.design.widget.CollapsingToolbarLayout
...
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:layout_gravity="top"
Android:background="?attr/colorPrimary"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
</Android.support.design.widget.CollapsingToolbarLayout>
</Android.support.design.widget.AppBarLayout>
<Android.support.v4.widget.NestedScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
...
MainActivityのonCreate関数にもこれらを追加しました
setSupportActionBar(toolbar);
collapsingToolbarLayout.setTitle("App Name");
ツールバー(タイルと他のコンテンツ、後で追加します)を、アプリバーが展開または折りたたまれているかどうかに関係なく、一番上に留まるようにします。
私はドキュメントを読み、多くの投稿やチュートリアルを読み、多くのビデオを見ましたが、実用的なソリューションまたは関連するソリューションを見つけることができませんでした。
誰かがこれを修正する方法について何らかのアイデアを持っているなら、提案してください。手伝ってくれてありがとう。
同様の問題レポートのコメントで答えを見つけたとき、自分で解決策を探していました。
基本的に、CollapsingToolbarLayout
でsetTitleEnabled()
を次のように呼び出します。
CollapsingToolbarLayout.setTitleEnabled(false);
これをCollapsingToolbarLayout
に追加することにより、xmlでも同様に行うことができます。
app:titleEnabled="false"
false
に設定することにより、希望する動作が得られます。タイトルは画面の上部に固定されたままです。
Toolbar
自体は実際には既に最上位にありましたが、これにより、CollapsingToolbarLayout
の最下部とToolbar
の間を変換するのではなく、タイトルがそこに留まります。
Toolbar
タグ内に以下のコードを追加することでこれを達成しました。
app:layout_collapseMode="pin"
私の場合、app:titleEnabled="false"
をCollapsingToolbarLayout
に追加する必要がありました[〜#〜] and [〜#〜]app:layout_collapseMode="pin"
をAndroid.support.v7.widget.Toolbar
に追加しました
これで、ユーザーが上下にスクロールするかどうかに関係なく、ツールバーは画面上部に固定されたままになります。
タイトルを一番上に保つため、この属性をCollapsingToolbarLayout
に追加するだけです:
app:expandedTitleGravity="top"