ScrollView中存在EditText,焦点变化引发自动滚动问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ScrollView中存在EditText,焦点变化引发自动滚动问题相关的知识,希望对你有一定的参考价值。
参考技术A 经常遇到ScrollView中,存在EditText,当页面滑到底部做一个更新组件的操作时,界面会自动上滑到EditText位置。是因为这个时候焦点被EditText占用,布局自动定位到了它身上。还好在csdn上看到了一片文章,找到了解决方案,原文地址如下https://blog.csdn.net/xiao_sier/article/details/106992752
下面大概讲述下解决方案:
在ScrollView滚动时,让ScrollView自动获取到焦点
scrollView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
scrollView.setFocusable(true);
scrollView.setFocusableInTouchMode(true);
scrollView.setOnTouchListener((v, event) ->
v.requestFocusFromTouch();
return false;
);
这样就会捕获焦点,阻止了页面的滑动,很好的解决了问题。
Android Soft Keyboard在重新打开时隐藏EditText
我正在开发一个需要屏幕固定和一个完整窗口的应用程序,所以我隐藏了导航栏等。
当活动打开并且EditText获得焦点时,软键盘将变为可见,它将把EditText移到它上面 - 很棒,没有问题。
当我关闭软键盘并通过单击所述EditText重新打开它时,会出现问题,软键盘现在将隐藏EditText。
关于如何解决这个问题的任何想法?我试过在ScrollView中包含整个布局,问题仍然存在。
正在使用的窗口标志:
val flags = (View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_FULLSCREEN
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
window.decorView.systemUiVisibility = flags
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
在我的清单中,我使用:
android:windowSoftInputMode="stateHidden|adjustResize"
解决了。
我设法通过从EditText中删除输入类型来解决这个问题。
答案
我设法通过从EditText中删除输入类型来解决这个问题。
以上是关于ScrollView中存在EditText,焦点变化引发自动滚动问题的主要内容,如果未能解决你的问题,请参考以下文章
android EditText在获得焦点的时候下面的Tab被输入法顶上去了?
Android进入一个新页面,EditText失去焦点并禁止弹出键盘