记录Android开发中使用HorizontalScrollView的坑
来源:互联网 发布:淘宝招聘官网首页 编辑:程序博客网 时间:2024/05/01 06:25
前言
对于Android中的HorizontalScrollView控件,第一感觉是不怎么熟悉的,在以往的项目开发基本没有使用到. 横向的滚动布局也可以使用RecyclerView控件,所以HorizontalScrollView的使用频率确实不高. 最近开发的功能点需要使用到横向滚动的布局,往横向滚动的布局中添加图片,所以就打算使用HorizontalScrollView控件,这样也可以对其有一定的了解.
之所以写这篇文章不是总结HorizontalScrollView控件的,官方文档或者大牛都有翻译的文章,都可以了解得非常透彻,这篇文章主要还是记录开发中遇到的坑,简单做个记录,挖坑埋坑.
似坑非坑
使用的场景:
HorizontalScrollView布局嵌套一个横向的线性布局,动态添加ImageView控件(布局参数已设置)到横向线性布局,当HorizontalScrollView的内容超过屏幕的宽度之后,再让视图滚动到最右边;
出现的问题:
每次添加ImageView后,只滚动到倒数第二个的ImageView控件,而不滚动到最后那个刚添加的ImageView控件。当HorizontalScrollView的内容超过屏幕的宽度之后,再添加ImageView控件,就会使得每次最后的ImageView控件不被显示;
缘由:
当向HorizontalScrollView添加完ImageView(也就是addView)之后,不会立马就显示,而是在队列中等待处理,虽然很快就会显示,但是如果立即使视图滚动到最右边(调用其api为fullScroll), 这时候view可能还没有显示出来,所以就出现只滚动到倒数第二的ImageView控件,应该通过handler在新线程中更新
这里参考自文章:http://blog.csdn.net/t12x3456/article/details/12799825
解决方法:
mHsvContainer.postDelayed(new Runnable() { @Override public void run() { mHsvContainer.fullScroll(HorizontalScrollView.FOCUS_RIGHT);//主线程 }},100);/**或者下面定时器延迟*/Timer timer=new Timer();timer.schedule(new TimerTask() { @Override public void run() { mHsvContainer.fullScroll(HorizontalScrollView.FOCUS_RIGHT); }},100L);
思路:动态添加子View之后,通过延时100毫秒左右,再让HorizontalScrollView滚动,就可以使得HorizontalScrollView滚动到最右边
其它
上面让HorizontalScrollView滚动到最右边,使用的api是fullScroll(int direction),参数direction是指定滚动的方向.之前开发使用ScrollView时也有用到这个api,是指定ScrollView向底部滚动.api的使用还是非常简单而且简洁的.在让其视图滚动这个功能中也尝试了其它两个api,分别是arrowScroll和pageScroll,作用大致相同.
public boolean fullScroll (int direction)
处理按下”home/end”快捷键之后的滚动相应,参数是指定其滚动的方向,滚动同时会将焦点赋予移动后可视的最左或最右的组件.
public boolean arrowScroll (int direction)
响应点击左右箭头时对滚动条的处理,参数是指定其滚动的方向.
public boolean pageScroll (int direction)
处理按下”page up/down”快捷键之后的滚动响应,参数是指定其滚动的方向,此方法会将视图往左或往右滚动一个页面的距离,同时将焦点赋予移动后可视的最左或最右的组件.
关于HorizontalScrollView的讲解可参考 android HorizontalScrollView讲解
总结
- 习惯了每篇文章的总结,这次就感叹几声:” 每天的事都做不完,日子还是一天天过,偶尔是挺迷茫的,想想那些美好的辛酸的,日子还是继续着过.”
- 记录Android开发中使用HorizontalScrollView的坑
- Android中HorizontalScrollView的使用
- Android中HorizontalScrollView的使用
- Android中HorizontalScrollView的使用
- Android中HorizontalScrollView的使用
- Android中HorizontalScrollView的使用总结
- android----HorizontalScrollView的使用
- android HorizontalScrollView的简单使用
- Android中使用HorizontalScrollView和TableLayout遇到的问题
- Android中滚动视图(ScrollView、HorizontalScrollView)的使用
- Android中HorizontalScrollView和Scrollview的配置与使用
- Android中使用HorizontalScrollView横向滑动布局
- Android中ScrollView和HorizontalScrollView使用详解.
- android中一个关于horizontalscrollview的例子
- android中HorizontalScrollView实现viewpager的效果
- android ScrollView 和 HorizontalScrollView 的使用
- android ScrollView 和 HorizontalScrollView 的使用
- 【Android 开发】:UI控件之 ScrollView垂直滚动控件 和 HorizontalScrollView水平滚动控件的使用
- 3月23
- [code static]Go基础语法
- iOS原生OPENGL之贴图
- Android 自定义控件原理
- C语言中常用的几个内存申请函数
- 记录Android开发中使用HorizontalScrollView的坑
- 欢迎使用CSDN-markdown编辑器
- 3月24号
- 程序员的工作、学习与绩效
- Java入门篇——注解Annotation
- Office Web Apps Server作为Client,Java代码作为Host实现Office在线预览'
- c# in unity Update()函数的意义
- 全面解析回溯法:算法框架与问题求解
- javaScript的arguments传参数