ScrollView自动到底部的问题

问题背景:ScrollView中含有listview,每次启动的时候为了获取ScrollView的高度,需要完全测量listview的高度,因此,在默认情况下会滑动到页面的最低端,造成问题。

解决方法:
1.(XML)在ScrollView布局中,找到第一个View,给它获取焦点的权限,这样的话,在ScrollView测量完高度的之后,会相应View的获取权限的请求,又会回到View的位置,解决问题。

<View 
      ....
      android:focusable="true"
      android:focusableInTouchMode="true"
/>

2.(Java)

view.setFocusable(true); 
view.setFocusableInTouchMode(true); 
view.requestFocus();

关于焦点是什么的问题?
类似非触屏手机时代,需要使用键盘的上下左右去选中某个应用,然后点击确定执行。而触屏手机,我们只需要对应用点击一次,即可,无需焦点。也就是会所焦点是为了标记你目前选中的位置的。而这个在日历中却是有用的。
android:focusable与android:focusableInTouchMode
前者针对在键盘下操作的情况,如果设置为true,则键盘上下左右选中,焦点会随之移动。
而后者,显然是针对触屏情况下的,也就是我们点击屏幕的上的某个控件时,不要立即执行相应的点击逻辑,而是先显示焦点(即控件被选中),再点击才执行逻辑。
android:focusable=“true”不会改变android:focusableInTouchMode,因此只在键盘状态下显示焦点,在TouchMode状态下,依旧无法显示焦点。
android:focusable=“false”,一定会使android:focusableInTouchMode=“false”。
android:focusableInTouchMode=“false”,不会影响android:focusable。
android:focusableInTouchMode=”true”,一定会是android:focusable=“true”
http://stackoverflow.com/questions/23799064/what-is-the-difference-between-setfocusable-and-setfocusableintouchmode

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容