8

タイトルは明らかです。私はこのレイアウトを持っています:

_________________
|_______________| <- Toolbar    
|___|___|___|___| <- Tablayout
|               |
|               |
|   ViewPager   |
|               |
|_______________|

ツールバーとタブレイアウトは両方とも 内にあるAppBarLayoutため、スクロール フラグを使用して、上部に向かってスクロールするときにツールバーを非表示にできます。問題は、これがネストされたスクロールをサポートするビューでのみ機能することです。ほとんどのタブ (ほとんどのページ) はsupport.v4.NestedScrollViews であるため、問題ありません。その他は 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。高さが小さい小さなビューが表示され、ページの残りの部分は空です。

4

3 に答える 3

2

残念ながら、ネストされたスクロールを機能させる方法はありListViewません。それ以外の場合は、API 21 で行われた変更は必要ありません。

現在のParse SDKは実際にはParseQueryAdapter完全に削除されていることに注意してください。そのため、 Parse クエリ API を直接RecyclerView使用して、独自のベース アダプタの構築を開始することは理にかなっています。

于 2015-09-28T00:11:43.367 に答える