相信各位都遇到过这种情况,那就是当ScrollView里面嵌套的控件存在listview 或者recyclerview时,会出现开局没有在顶部的情况。
原因分析:
1.在Activity计算窗口的高度时,是在listview没有填充数据时候就完成的,由于ScrollView嵌套listview时没有指定高度,所以ScrollView就会按照layout中定义的默认高度计算。
2.因为listview(recyclerview)获取了焦点。
以下仅提供几种解决方式:
一:手动设置滚动到顶部
注意:应该通过handler在新线程中更新
scrollView.post(new Runnable() {
@Override
public void run() {
scrollView.fullScroll(ScrollView.FOCUS_UP);
}
});
二:.如果ScrollView控件上方有其他控件,则可以设置焦点,滚动条自然就到顶部去了,如下:
txtBaseMsg.setFocusable(true);
txtBaseMsg.setFocusableInTouchMode(true);
txtBaseMsg.requestFocus();
大功告成
参考文章:https://blog.youkuaiyun.com/jiaoyaning1210/article/details/51084246