ScrollView里面嵌套的控件存在listview 或者recyclerview时,会出现页面打开时没有在顶部的情况,设置焦点滚动到顶部。
原因分析:
ScrollView和listview(recyclerview)显示实行的先后问题,
1.在Activity计算窗口的高度时,是在listview没有填充数据时候就完成的,由于ScrollView嵌套listview时没有指定高度,所以ScrollView就会按照layout中定义的默认高度计算。
2.因为listview(recyclerview)获取了焦点。
以下仅提供几种解决方式:
方法一:
手动设置滚动到顶部
scrollView.post(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_UP);
});
方法二:
如果ScrollView控件上方有其他控件,则可以设置给该控件的焦点,让滚动条回滚到顶部去:
View view =(View)findViewById(R.id.view);
view.setFocusable(true);
view.setFocusableInTouchMode(true);
view.requestFocus();