自定义控件,滑动冲突

引用的文章:http://blog.csdn.net/superharder/article/details/40818019

http://blog.csdn.net/psh24053/article/details/7517029

一、 想想我们需要自定义哪些属性。

在res/values/attrs.xml 文件中写自定义的属性

属性文件

二、在布局文件中,需要包名.控件名,才可以使用这个控件,使用自定义的属性,需要声明命名控件,不在是android:xxx。

布局文件

三、获取属性值对View初始化

获取属性值

一、ScrollView嵌套ListView的滑动冲突问题

方法一:ListView在布局文件中高度,不管是match_parent,wrap_content,就会显示成一行。如果ScrollView中内容一屏显示不了,和Listview的滚动发生冲突,会出现ListView无法滚动。为什么呢?滑动事件不知道交给哪个处理,默认ScrollView拦截了滑动事件,所以造成了ListView不会滑动的现象。怎么解除滑动方向一致的冲突呢?有两种解决方法:1.外部拦截法,2.内部拦截法。对于这种情况推荐方法1,处理比较简单。

给ListView添加Touch监听

根据在ListView那块区域点击事件我们来区分让那一个控件来滑动,事件类型为move,down时,告诉父容器不能拦截事件。我们可以通过父容器的一个方法requestDisallowInterceptTouchEvent方法来屏蔽父容器的拦截功能。

方法二:自定义一个继承ListView的类,在onMeasure方法中,给出高度,一般这个值Intenger.MAX_VALUE >>2 .在运行出是什么样的,一个展开的ListView,数据全部显示出来。

onMeasure方法


片段一


片段二


片段三
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容