问题
问题1:实际开发中,遇到了一个问题,发送验证码后,进入60s倒计时,因为页面过长,所以就用了ScrollView。结果,每次刷新倒计时值的时候,都会导致自动滚动。
问题2:ScrollView内部有EditText,当该页面跳转到其他页面后,再回来的时候,焦点发生变化,导致了自动滚动。
网上的错误方案
1,在xml中加入下面的代码
android:focusable="true"
android:focusableInTouchMode="tru
缺点:只能解决部分机型
2,在xml中加入下面代码
android:descendantFocusability="blocksDescendants"
缺点:会屏蔽页面上所有的输入时间,EditText无法获取焦点,不能输入
正确做法
scrollView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
scrollView.setFocusable(true);
scrollView.setFocusableInTouchMode(true);
scrollView.setOnTouchListener((v, event) -> {
v.requestFocusFromTouch();
return false;
});