一、场景: TabLayout + ViewPage. 使用NestedScrollView嵌套,滑动的时候Tab会被顶上去
二、达到效果的做法:
- NestedScrollView
app:layout_behavior="@string/appbar_scrolling_view_behavior"
- 包裹的LinerLayout增加 (共有三个属性,自行查询)
android:descendantFocusability="afterDescendants"
- TabLayout+ViewPager父布局设置高度为,当前剩余屏幕的高度
三、 问题:二中第三条,设置完未生效
设置为在初始在屏幕内,则获取当前tab的位置,用屏幕高度- 当前位置y,就是TabLayout+ViewPager父布局的高度;不在初始屏幕内,让滑动到tabLayout时,在顶部不往上滑动,此时就是 屏幕高度-状态栏高度-标题栏高度;
但设置完成后,初始高度设置过高时,显示还是多余出一截; 初始高度设置过低时,显示还是最低的那个高度。
四、解决:
上述描述,经过打印,高度设置成功,但是一打印,其父布局高度是-2,没有变化,还是初始化的高度,由此就是父布局的问题了。所以找到父布局,然后去设置高度并刷新,完成。
五、代码
/** * 动态刷新ListView的高度,分两种 *