標題很清楚。我在這個佈局:ListView在API上嵌套滾動<21
_________________
|_______________| <- Toolbar
|___|___|___|___| <- Tablayout
| |
| |
| ViewPager |
| |
|_______________|
兩個工具欄和tablayout是一個AppBarLayout
裏面,這樣我就可以使用滾動標誌隱藏在向頂部滾動工具欄。問題是這隻適用於嵌套滾動支持的視圖。大部分選項卡 - 我的意思是大多數頁面 - 都是support.v4.NestedScrollView
s,所以這是可以的;其他人(並且需要)ListView
s。
從棒棒糖開始,我可以簡單地將android:nestedScrollingEnabled="true"
添加到列表視圖中,並且工具欄在滾動中隱藏正確。
在API < 21上,雖然沒有這樣的屬性,工具欄也沒有隱藏。更重要的是,由於CoordinatorLayout
中的一些測量錯誤,列表中最後的項目被隱藏:listview的行爲就好像它有當前由工具欄佔用的空間。
解決方案:
切換到
RecyclerView
,它不支持嵌套滾動:我不能,因爲我需要使用僅與適配器看法,他認爲我不能工作的外部庫適配器替換(即ParseQueryAdapter
);延伸
ListView
並實現嵌套滾動:看起來很複雜;延伸
ListView
並實施一些解決方法,如測量內容以避免最後一項問題或(和)使工具欄隱藏的自定義行爲:似乎也很複雜;使用一些佈局技巧:找不到。
任何幫助?
例如,I(拼命)嘗試:
<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
。我得到一個小高度的小視圖,頁面的其餘部分是空的。
我不是在最後一個版本,但我記得那個類沒有被列入公共API的很長時間。然而,謝謝你,「你不能」 - 我花了幾個小時處理NestedScrolling接口。 – natario
「在ListView上無法獲得嵌套滾動工作」。有ViewCompat.setNestedScrollingEnabled(ListView,boolean); – Dogcat
@Dogcat - 它在API 21之前什麼都不做。它只是讓你不必檢查API級別。 – ianhanniballake