タイトルは明らかです。私はこのレイアウトを持っています:
_________________
|_______________| <- Toolbar
|___|___|___|___| <- Tablayout
| |
| |
| ViewPager |
| |
|_______________|
ツールバーとタブレイアウトは両方とも 内にあるAppBarLayout
ため、スクロール フラグを使用して、上部に向かってスクロールするときにツールバーを非表示にできます。問題は、これがネストされたスクロールをサポートするビューでのみ機能することです。ほとんどのタブ (ほとんどのページ) はsupport.v4.NestedScrollView
s であるため、問題ありません。その他は s です (そしてそうである必要があります) ListView
。
Lollipop から、リスト ビューに追加するだけで、android:nestedScrollingEnabled="true"
スクロール時にツールバーが正しく非表示になります。
ただし、API < 21 では、そのような属性はなく、ツールバーは非表示になりません。さらに重要なのは、リストの最後の項目が非表示になっていることです。これは、いくつかの測定バグのためですCoordinatorLayout
。listview は、ツールバーが現在占有しているスペースがあるかのように動作します。
ソリューション:
ネストされたスクロールをサポートする に切り替えます
RecyclerView
。アダプター ビューでのみ動作し、置き換えることができない外部ライブラリ アダプターを使用する必要があるため、できません (つまり、ParseQueryAdapter
)。ネストされたスクロールの拡張
ListView
と実装: 複雑に思えます。いくつかの回避策を拡張
ListView
して実装します。たとえば、最後の項目の問題を回避するために何かを測定したり、(および) ツールバーを非表示にするカスタム動作を実行したりします。これも複雑に思えます。いくつかのレイアウトのトリックを使用してください: 何も見つかりませんでした。
何か助けはありますか?
たとえば、私は(必死に)試しました:
<android.support.v4.widget.NestedScrollView
android:nestedScrollingEnabled="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</android.support.v4.widget.NestedScrollView>
しかし、このようにListView
レイアウトされていませんmatch_parent
。高さが小さい小さなビューが表示され、ページの残りの部分は空です。