androidlistview事件冲突
1. Android listview的item点击事件怎么失效了
原因多半是由于在自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。
这时候就可以使用descendantFocusability来解决啦,API描述如下:
android:descendantFocusability
Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.
Must be one of the following constant values.
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。念瞎告
属性仔明的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会神搏覆盖子类控件而直接获得焦点
通常用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了
2. android 代码中设置控件的垂直居中和两个控件之间的距离。
首先是垂直居中,下面有朋友已经回答了,而控件和控件之间的距离设置是设置margin
3. Android 悬浮窗形式显示的listview,设置setOnItemClickListener无法监听到
这个是焦点的问题,我曾经做悬浮窗的EditText的时候碰到过这个问题,需要让你的悬浮窗取得焦点才可以,否则的话看起来有点击的反应,但是无法响应焦点的事件。关键代码如下:
wmParams = new WindowManager.LayoutParams();
//设置浮动窗口不可聚焦(实现操作除浮动窗口外的其他可见窗口的操作)
wmParams.flags = LayoutParams.FLAG_ALT_FOCUSABLE_IM|LayoutParams.FLAG_NOT_FOCUSABLE;
这样设置以后浮窗没有焦点,不能响应浮窗里面的部分响应事件。
设置成: wmParams.flags = LayoutParams.FLAG_ALT_FOCUSABLE_IM&LayoutParams.FLAG_NOT_FOCUSABLE;
这样以后,可以响应浮窗里面的点击事件,但是点击浮窗外面的时候,会出现无法点击。
你试试
4. android listview上下滑动时为什么不触发点击事件
setOnItemClickListener()
触发的机制是,
手指点击时会产生触屏事件的
ACTION_DOWN,
这会根据xy坐标判断是哪个Item被点击,
手指提起时会触发ACTION_UP事件,
这样才是真正完成了整个点击的过程,从触发了setOnItemClickListener事件
;
如果
你点击之后移动了
会触发ACTION_MOVE事件,当手指移动超过一定距离再提起时,就不会再触发setOnItemClickListener
事件。
希望能帮到你。