Title is clear. I'm having this layout:
_________________
|_______________| <- Toolbar
|___|___|___|___| <- Tablayout
| |
| |
| ViewPager |
| |
|_______________|
Both toolbar and tablayout are inside an AppBarLayout
, so I can use scroll flags to hide the toolbar on scrolling toward the top. The problem is that this only works with nested-scrolling-supported views. Most of the tabs - I mean, most of the pages - are support.v4.NestedScrollView
s, so that is OK; others are (and need to be) ListView
s.
From Lollipop on, I can simply add android:nestedScrollingEnabled="true"
to the list view, and the toolbar hides correctly on scroll.
On API<21, though, there's no such attribute and the toolbar doesn't hide. Even more important, the very last items in the list are hidden, because of some measuring bug in CoordinatorLayout
: listview acts as if it had the space currently occupied by the toolbar.
Solutions:
Switch to RecyclerView
, which does support nested scrolling: I can't, because I need to use an external-library adapter that works only with adapter views and that I can't replace (namely, ParseQueryAdapter
);
Extend ListView
and implement nested scrolling: seems way to complicated;
Extend ListView
and implement some workaround, like measuring stuff to avoid the last-item issue or (and) a custom behavior to make the toolbar hide: seems complicated too;
Use some layout trick: found none.
Any help?
For example, I (desperately) tried:
<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>
But this way the ListView
is not laid out as match_parent
. I get a little view with small height, and the rest of the page is empty.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…