工作经验总结:点击事件透布局层的问题

点击事件透布局层的问题总结:

1. Hirerachy Viewer :

       Api 16及之上: 用eclipse 的Hirerachy viewer直接查看

        Api 16之下    :运行android sdk 下的Hirerachy Viewer脚本。(例如:D:\Program Files\adt-bundle-windows\sdk\tools\hierarchyviewer.bat)

        原因: adt版本

2. View.GONE

         View.GONE : 不显示并不分配相关space

         View.INVISIABLE : 不显示并分配相关space

        => 但是透过Hirerachy Viewer看到的结果是:

         父view是一个frameLayout,处于另个FrameLayout中,向下靠齐。子view是一个TextView。

          1)  当父view和子view大小固定时:

                Api 16及之上,用eclipse的Hirerachy viewer直接查看,结果:View.INVISIABLE、View.GONE时,看不到相关view的信息。

                Api 16之下,结果是:View.GONE和View.INVISIABLE下,都能看到view的相关属性

                => 注意到父view的大小都未发生变化。

           2)  当父view不固定大小时:

                   同上,注意到父view的大小都未发生变化。

            3) 当父view和子view大小都不固定时:

                   同上,注意到父view的大小都未发生变化。

             4) 要去重绘,置父view为invalidate().

                    同上,注意到父view的大小都未发生变化。

3. android:clickable

         1) view是否获取当前的点击事件是有android:clickable属性决定的。

              如果一个Layout设置了android:clickable=“true"的属性,那么该Layout将拦截所有子View未处理的点击事件,不再让其向下传递。

              如果一个Layout设置了setOnClickLisener, 它也会接受并拦截所有子view未处理的点击事件。

         2)  最上层view不处理的事件,应该往下传吗??

               是应该向下传递的,

          3)  事件在Activiity的传递过程是? 

                我的理解:点击或物理事件传递到Window, 然后再传递到最上层view, 然后向下层view传递,直到有一个view有接受该onClick事件。

                                 上层view未处理,但是有监听(android:clickable=“true"),下层view也不会再收到。

                                 上层view的属性设置为(android:clickable=“false"或不设置监听(TockLisener和ClickLisener)), 该事件就会向下传递。

                                  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值