分别有5种flag:scroll,enterAlways,enterAlwaysCollapsed,exitUntilCollapsed,snap
scroll:设定该flag的view随scroll滚动出(进)屏幕,
该flag必须设置,否则直接设置其他无效果。
设置该flag的view前面的view一定要设置该flag,否则无效果。
scroll|enterAlways:
跟只设置scroll的区别是:
app:layout_scrollFlags="scroll"
向上滚动的时候设置该值的view先出 scrollview再滚动,向下滚动的时候 scrollview先滚动到顶部,该view才进入屏幕。
app:layout_scrollFlags="scroll|enterAlways"
向上滚动的时候设置该值的view先出 scrollview再滚动,向下滚动的时该view先进屏幕,scrollview再滚动。
- scroll|enterAlways|enterAlwaysCollapsed:
多了一个概念:最小高度。
向上滚动的时候设置该值的view先出 scrollview再滚动;向下滚动的时候该view的最小高度先进屏幕,scrollview再消耗滚动距离,scrollview滚动到最上方的时候,该view剩下的高度再进来。
比如滚动距离全部是1000,设置该flag的view总高度是300,最小高度是100,向上滚动:view先消耗300,剩下的700 scrollview消耗;向下滚动,首先view消耗100,剩下的scrollview消耗700(假如700就已经到顶部),剩下的200该view消耗。
PS:只设置scroll|enterAlwaysCollapsed是无效的,我也不知道为啥。
scroll|exitUntilCollapsed:
一样关乎最小高度
向上滚动的时候,该 view先滚动到最小高度,剩下的scrollview消耗。
也就是说设置该flag的view不会完全滚出屏幕,而总是把最小高度留在屏幕里,向下滚动的时候view完全进入屏幕,scrollview才开始滚动。scroll|snap:设置该flag的view只会完全退出(进入屏幕),以上几个都是有可能只有一部分退出(进入屏幕)。
好了,实践出真知。