文档章节

android点击事件在不同级别view中的优先级问题

JayPark不作死
 JayPark不作死
发布于 2014/10/13 10:22
字数 363
阅读 2268
收藏 1

开发中很常见的一个问题,当项目中的listview不仅仅是简单的文字,Item中存在诸如 ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),可能会发生点击每一个 item的时候没有反应,无法获取的焦点。 这是因为此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。

   这时候就可以使用descendantFocusability属性来解决,他可以设置一个控件如何处理触摸事件,该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

   属性的值有三种:

1
2
3
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

   用法示例,下面的LinearLayout会屏蔽其中button的点击事件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<LinearLayout
     android:id= "@+id/titlebar_right_tab"
     android:layout_width= "55dip"
     android:layout_height= "fill_parent"        
     android:gravity= "center"
     android:background= "@drawable/selector_tab"
     android:descendantFocusability= "blocksDescendants"
>
     <Button
         android:layout_width= "50dip"
         android:layout_height= "50dip"
         android:text= "按钮"
     />     
</LinearLayout>


   当然对于重写了ontouchevent 或者 onintercepttouchevent 方法的自定义控件来说,这个属性可能不会起作用。


本文转载自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0610/1622.html

共有 人打赏支持
JayPark不作死
粉丝 15
博文 51
码字总数 13622
作品 0
苏州
程序员
私信 提问
Android view事件分发初步

点击事件用MotionEvent表示,最重要的事件分别是: 手指按下:ACTION_DOWN 手指移动:ACTION_MOVE 手指抬起:ACTION_UP 点击事件的分发始于Activity,通过Window,然后再传递到View MotionEv...

京一
08/19
0
0
Android 机制篇 - 事件分发机制超详解(🔥🔥🔥🔥🔥🔥🔥🔥)

Android 虽然不是四大组件,但其并不比四大组件的地位低(涉及面的广度和深入甚至比四大组件还复杂🔥)。而View的核心知识点“事件分发机制”则是不少刚入门同学的拦路虎(1、项目中处处遇...

Pepsimaxin
07/12
0
0
10分钟了解Android的事件分发

什么是事件分发? 大家知道Android中的视图是由一个个View嵌套构成的层级视图,即一个View里包含有子View,而这个子View里面又可以再添加View。当用户触摸屏幕产生一系列事件时,事件会由高到...

codeGoogle
05/21
0
0
android对OnTouchListener、OnClickListener等事件响应的研究

前几天遇到一个小问题,就是给listview添加onItemClickListener、onItemLongClickListener、onTouchEvent三种事件的 时候,只执行了onTouchEvent事件,而其他的两个事件未执行,解决办法:在...

雨焰
2012/06/19
0
1
Android源码分析-点击事件派发机制

转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17339857 概述 一直想写篇关于Android事件派发机制的文章,却一直没写,这两天刚好是周末,有时间了,想想写一篇吧,...

长平狐
2013/12/25
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Flask框架web开发:零基础入门

Flask框架是Python开发的一个基于Werkzeug和Jinja 2的web开发微框架,它的优势就是极其简洁,但又非常灵活,而且容易学习和应用。因此Flask框架是Python新手快速开始web开发最好的选择,此外...

笔阁
2分钟前
0
0
VMware前路难测,多个厂家群雄逐鹿

在人们高谈Salesforce、亚马逊等新兴云计算厂商取得的成就时,以VMware、HPE和Cisco为代表的老牌厂商也在进行着自己的转型和变化,而且还取得一定的进展。以VMware为例,虚拟机巨头公布了第二...

linuxCool
5分钟前
0
0
什么是以太坊DAO?(一)

Decentralized Autonomous Organization,简称DAO,以太坊中重要的概念。一般翻译为去中心化的自治组织。 “在区块链上,没有人知道你是一台冰箱”——理查德布朗 到目前为止,我们列出的所有...

geek12345
7分钟前
0
0
linux防火墙操作

一、.对于centos7自带的防火墙的相关指令 #停止firewall systemctl stop firewalld.service #禁止firewall开机启动 systemctl disable firewalld.service #查看firewall的状态 systemctl st......

张锦飞
9分钟前
0
0
Linux 磁盘与磁盘分区

  Linux 系统中所有的硬件设备都是通过文件的方式来表现和使用的,我们将这些文件称为设备文件,硬盘对应的设备文件一般被称为块设备文件。本文介绍磁盘设备在 Linux 系统中的表示方法以及...

SEOwhywhy
18分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部