首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

按钮即使在ImageView后面也会被按下,这怎么可能?

按钮即使在ImageView后面也会被按下的原因是,Android中的触摸事件分发机制决定了View的触摸事件的传递顺序。默认情况下,ViewGroup中的子View是按照它们在布局文件中的顺序进行绘制和触摸事件的传递的。

当用户点击屏幕上的某个位置时,Android系统会将触摸事件传递给最顶层的ViewGroup,然后由ViewGroup按照一定的规则将触摸事件传递给子View。在这个过程中,如果某个子View消费了触摸事件(即返回了true),那么该事件将不再传递给其他子View。

所以,如果按钮在ImageView的后面,但是按钮先接收到了触摸事件并消费了该事件,那么即使ImageView在按钮的上面,用户点击按钮的位置时,按钮仍然会被按下。

解决这个问题的方法有两种:

  1. 调整布局:可以将按钮放在ImageView的前面,这样按钮就会覆盖在ImageView上面,用户点击按钮时,按钮会被按下。
  2. 设置点击事件监听器:可以为ImageView设置点击事件监听器,在监听器中处理点击事件,而不是依赖按钮的点击事件。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android事件分发机制完全解析,带你从源码的角度彻底理解(上)

我经过较长时间的筹备之后,终于决定开始写这样一篇文章了。目前虽然网上相关的文章不少,但我觉得没有哪篇写得特别详细的(也许我还没有找到),多数文章只是讲了讲理论,然后配合demo运行了一结果。...onTouch execute, action " + event.getAction()); return false; } }); onTouch方法里能做的事情比onClick要多一些,比如判断手指...我们来试一就知道了,运行程序点击按钮,打印结果如下: ?...因为ImageView按钮不同,它是默认不可点击的,因此onTouchEvent的第14行判断时无法进入到if的内部,直接跳到第91行返回了false,也就导致后面其它的action都无法执行了。...第二,布局文件里面给ImageView增加一个android:clickable="true"的属性,这样ImageView变成可点击的之后,即使onTouch里返回了false,ACTION_DOWN

1.2K60

Android事件分发机制完全解析,带你从源码的角度彻底理解(上)

我经过较长时间的筹备之后,终于决定开始写这样一篇文章了。目前虽然网上相关的文章不少,但我觉得没有哪篇写得特别详细的(也许我还没有找到),多数文章只是讲了讲理论,然后配合demo运行了一结果。...onTouch execute, action " + event.getAction()); return false; } }); onTouch方法里能做的事情比onClick要多一些,比如判断手指...,点击ImageView,你会发现结果如下: ACTION_DOWN执行完后,后面的一系列action都不会得到执行了。...因为ImageView按钮不同,它是默认不可点击的,因此onTouchEvent的第14行判断时无法进入到if的内部,直接跳到第91行返回了false,也就导致后面其它的action都无法执行了。...第二,布局文件里面给ImageView增加一个android:clickable=”true”的属性,这样ImageView变成可点击的之后,即使onTouch里返回了false,ACTION_DOWN

47610
  • 项目需求讨论-标题栏上的搜索功能

    今天讲的就是一个很简单的具体开始时候遇到的需求,标题栏中实现搜索功能,而且美工要求需要实现下面GIF图的效果,我就实现了,可能不是最好的,有哪里可以更方便请大家指出。...,使用android:layout_gravity="center",然后因为搜索按钮右边,对ImageView使用android:layout_gravity="right"。...,覆盖了一层横向布局,用来显示SearchView和取消按钮,该界面默认是隐藏的,只有当了搜索图标按钮,再让这个横向布局显示,盖在上面,(当然同时可以让原来的标题和搜索图标按钮隐藏)。...这时候又因为我们的标题是FrameLayout的中间,所以标题整体往右边便宜了。那岂不是都不能实现了??该怎么处理呢??答案当然是有方法处理。(B装的我好累。)...,设为false,则光标放大镜后面,输入文字,放大镜不会消失。

    1.4K10

    Android界面组件基本用法

    为ImageButton指定android:text属性没用,不会显示文字 可以指定android:background为按钮增加背景图片,但图片是固定的 可以指定android:src为图片按钮增加图片属性...如果控件的大小是100*100 图片资源是80*80的话,那么用src,图片就会居中显示,如果使用background那么图片就会被拉伸充满控件。...}); 8.自动完成文本框(AutoCompleteTextView) 比普通文本框多了一个功能:当用户输入一定字符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个菜单后,组件会用户选择自动填写该文本框...通过TabHost对象的方法来创建选项卡、添加选项卡 选项卡主要由TabHost、TabWidget、FrameLayout3个组件组成,三者缺一不可,想象一选项卡的特点,多个卡重叠在一起,所以用FrameLayout...实例: TabHost tabHost = getTabHost();或者findViewById也行,不过后面要有tabHost.setup(); //设置使用TabHost布局 LayoutInflater.from

    1.7K20

    IOS开发系列——UIView专题之五:常用开发技巧篇

    尺寸时,只有部分显示ImageView中。...UIViewContentModeScaleAspectFit会保证图片比例不变,而且全部显示ImageView中,意味着ImageView会有部分空白。...UIViewContentModeScaleAspectFill会证图片比例不变,但是是填充整个ImageView的,可能只有部分图片显示出来。...如果一个子视图的区域超过父视图的bound区域(父视图的clipsToBounds属性为NO,这样超过父视图bound区域的子视图内容会显示),那么正常情况对子视图父视图之外区域的触摸操作不会被识别...对于每个触摸操作都会有一个UITouch对象,UITouch对象用来表示一个触摸操作,即一个手指在屏幕上、移动、离开的整个过程。

    1.1K20

    iOS-视频播放器的简单封装

    下面来看一CLAVPlayerView的结构。 ?...animateWithDuration:0.5 animations:^{ self.toolView.alpha = 0; }]; } } 工具栏中播放/暂停按钮的点击需要做一些处理...[self.player play]; [self addProgressTimer]; } } Slider的拖动跳跃播放视频 根据Slider滑动拖动滑动位置播放视频需要监听Slider的...时移除定时器,拖动时根据拖动的值即时的计算当前播放时间并显示label上,松开时计算当前播放时间,并跳转到当前播放时间进行播放。...重播按钮和全屏播放按钮的实现 定时器每秒调用的更新Slider的方法中判断当视频播放完毕之后,显示遮盖View,而重播按钮的实现,其实就是将Slider的value置为0并重新调用点击Slider松开时的方法

    1.9K110

    安卓 ImageView 的 scaleType 用法实用总结

    安卓 ImageView 的 scaleType 用法实用总结 如果想快速决定用哪个值好,那直接跳到后面的总结吧。 ImageView 共有7种 scaleType。...fitStart 等比缩放到某一边能够填充控件大小,且图片能完整显示,并靠左或靠上显示 fitEnd 等比缩放到某一边能够填充控件大小,且图片能完整显示,并靠右或靠显示 fitXY...若图片宽高小于控件宽高,则图片只会显示中间部分,即周围会被裁剪。也就是无论如何图片的大小都不会改变,控件大小决定可见范围。...与fitCenter的区别是centerCrop的图片会填充整个区域,所以可能会被裁剪。 (注意这里图片背景为灰色,图片白色部分不属于ImageView,即ImageView已被图片占满。...,且占满整个ImageView,就用fitXY 有其他特殊需求的,用比较高级的matrix 最终总结 可见显示的需求主要是根据是否比例,图片是否要充满控件这两个因素决定的。

    1.2K30

    Android GridView仿微信添加多图效果

    项目中这种添加⑨图的效果应该是非常常见的,后面有个添加的按钮应该怎么实现,这也许让一部分小白抓狂了吧~来吧,淡漠带你飞,走起~~啦啦啦…… 起飞前先说下,本篇只是讲解九宫格添加图片的效果,至于选择图片的效果是别人写的库...,最外层的SquareLayout是一个让GridView显示的Item为正方形的处理,RelativeLayout里有个ImageView这个是用来展示图片的,ImageButton是删除的按钮;然后外面...ImageButton是添加按钮,设置了隐藏属性android:visibility=”gone”,只有需要的时候才把添加按钮召唤出来,添加完9个图片的时候是没有添加按钮的。...imagePicker.setCrop(true);//允许裁剪(单选才有效) imagePicker.setSaveRectangle(true);//是否矩形区域保存 imagePicker.setSelectLimit...单位像素 } } 总结:其实原理就是把数据的size+1,做为添加按钮的放置,然后判断下有9张图就不显示添加按钮,并且size不+1,就这样,一个带添加按钮的GridView就好了。

    58610

    六天完成一个简单iOS App - 第二天

    快速登录按钮的布局 首先快速登录方便的两条线都是图片,只需要简单设置frame即可,下面的三个快速登录明显是按钮,但是我们知道,UIButton默认的是UIImage左边,titleLabel右边,...❌号和注册账号布局 第一部分的布局非常简单,这里有一个注意点:UIButton 当只有一张图片显示的时候 ,建议使用image而不要设置背景图片,因为背景图片的设置会看按钮有多大就将图片拉伸到大,图片会被拉伸...账号密码输入框登录按钮布局 这部分的布局很简单,这里图片中提供了textfield的背景图片,所以这里我们先用UIImageView将背景图片显示,然后在在图片上添加一个透明的textfield,所以...textfield样式选择 另外登陆按钮需要设置Type为Custom,如果是System当我们的时候会自动做出处理如下图,并且会自动将字体渲染成蓝色 ?...,然后将占位文字的内容修改回为空,此时即使我们只设置了占位文字颜色,没有设置占位文字,打印占位文字为null // NSString *oldplaceholder = self.placeholder

    2.1K50

    Unity与 DLL文件 ☀️| 什么是DLL✨?

    Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。  当我们执行某一个程序时,相应的DLL文件就会被调用。...亲,这边建议百度百科看一呢(百度搜不出啥道道来~) 我查找了一些资料后发现,so 和 dll 都被称作 动态链接库 没错,甚至Unity中调用他俩的方式都可以是一样的!...文件一样,其中包含的也是程序的二进制执行代码和程序所需的资源(比如图标、对话框、字符串等) DLL中的代码是以API函数`形式出现的,通俗地说,DLL中包含的程序代码都被做成了一个个小模块,应用程序通过所需...DLL中特定的按钮,来调用DLL中这个按钮所代表的功能 查阅资料时看到有篇文章是这样说的: Windows中有3个非常重要的底层DLL:Kernel32.dll、User32.dll、GDI32.dll...所以,应用程序可以需要时才将DLL载入到内存中,让程序的可维护性变得很高。

    2.8K20

    Android UI设计与开发之ViewPager仿微信引导界面以及动画效果

    / </LinearLayout 5、在这里还要创建一个xml文件来实现自定义按钮的效果,关于自定义按钮的效果实现我会在后面的文章中专题详细介绍,这里就不在赘述,start_weixin_btn.xml...--时的效果-- <item android:state_enabled="true" android:drawable="@drawable/whatsnew_btn_nor" /...) findViewById(R.id.page4); pointImage5 = (ImageView) findViewById(R.id.page5); //实例化开始按钮 startBt...startBt = (Button) view6.findViewById(R.id.startBtn); 这是最后一个布局界面中的一个开始按钮,由于findvViewById()方法前面忘记使用了...我会在后面的章节中以专题的形式来介绍动画这一块的类容,所以这里不再赘述, GuideViewDoor.Java: package com.yangyu.myguideview02; import

    67141

    【iOS】UI基础Day2-笔记(毛玻璃、帧动画、音效等)

    = 0; //设置动画播放时长 self.imageView.animationDuration = 1; //开始动画 [self.imageView startAnimating]; } 5.小招按钮的点击事件...]; } 6.大招按钮的点击事件 - (IBAction)bigSkill{ //设置图片动画 self.imageView.animationImages = self.bigSkillImageArr...就算指向它的指针被销毁,该资源会被从内存中干掉 b. 放到Assets.xcassets的图片,默认就有缓存 c. 图片经常被使用 2> imageWithContentsOfFile: a....指向它的指针被销毁,该资源会被从内存中干掉 b. 放到项目中的图片就不由缓存 c....self.player = [[AVPlayer alloc] initWithPlayerItem:playItem]; 3.播放音效 [self.player play]; ---- 拳皇中播放音效 1.界面被加载时创建播放音乐器

    64420

    Android drawable微技巧,你所不知道的drawable的那些细节

    那么为什么好端端的一张图片会被自动放大呢?而且放大的比例是不是有点太过份了。其实不然,Android所做的这些缩放操作都是有它严格的规定和算法的。...,并给按钮注册了一个点击事件。...可以这样来分析,根据我们刚才所学的内容,如果将一张图片放在低密度文件夹下,那么高密度设备上显示图片时就会被自动放大,而如果将一张图片放在高密度文件夹下,那么低密度设备上显示图片时就会被自动缩小。...这是因为,市面上480dpi到640dpi的设备实在是太少了,如果针对这种级别的屏幕密度来设计图片,图片在不缩放的情况本身就已经很大了,基本起不到节省内存开支的作用了。...后面我会抓紧时间继续准备新系列的内容,敬请期待。

    2.5K80

    Android-Xml绘图

    rectangle android:shape=["rectangle"|"oval"|"line"|"ring"]> //当shape="rectangle"时使用 //半径,会被后面的单个半径属性覆盖...如何不设置偏移量,前面的图层就完全挡住了后面的图层,从而看不到后面的图层效果了。比如上面的例子,Tab背景中的白色背景设置了android:bottom之后才能看到一点红色背景。...经过验证,偏移超出的部分会被截掉而看不到,不信可以自己试一。有时候很有用,比如当我想显示一个半圆的时候。...---- 另外,关于item的用法,总结: 根节点不同时,可设置的属性是会不同的,比如selector,可以设置一些状态属性,而在layer-list,可以设置偏移量; 就算父节点同样是selector...举个例子,一个按钮的背景,默认时是一个形状,时是一个形状,不可操作时又是另一个形状。有时候,不同状态改变的不只是背景、图片等,文字颜色会相应改变。

    77710

    关于Android PullTorefreshScrollview回到顶部实例

    列表滑动下面显示按钮,点击按钮回到顶部的功能,一般scrollview会有滑动监听的事件,通过setOnScrollChangeListener()滑动监听滑动的距离来判断是否显示按钮就好了,但是PullTorefreshScrollview...onTouchListener方法,只能监听到手势,即何时、移动和弹起。当快速滑动手指弹起后,scrollview还在滚动的,什么时候去拿到它的scrollY值呢? ...自定义imageview里面定义线程,扫描当前scrollY和上一次保存的对比,不一样即说明仍在滚动,一样即表明scrollview滚动停止了。  什么时候开启线程呢?...onTouch回调中down、move或者up时调用。  试想:  如果在down中调用时,用户只scrollview上点击或短距离滑动,imageview里面要不停地开启线程?浪费资源。 ...如果在up中调用时,当用户着屏幕一口气滑过临界值,还不松手呢?还不显示imageview吗?也行,个人觉得不太好。  于是,我选择move中调用imageview地线程。

    93790

    Android入门教程 | Button,TextView背景设置

    Button 按钮 Button能对用户的点击行为作出反应。 xml文件中放置一个button。...Button,TextView背景设置 如何给按钮增加动感? Button 有(pressed)和未按之分,我们可给 2 种状态不同的背景颜色和文字颜色。...按钮和没的时候,按钮的背景颜色是不同的。...例如,Button 微件可以是多种不同状态(、聚焦或这两种状态都不是)中的其中一种,并且可利用状态列表可绘制对象,为每种状态提供不同的背景图片。 可以 XML 文件中描述状态列表。...每个状态变更期间,将从上到遍历状态列表,并使用第一个与当前状态匹配的项目 — 此选择并非基于“最佳匹配”,而是选择符合状态最低条件的第一个项目。

    89600
    领券