ImageButton和Button不设置点击事件也会拦截父View的点击事件

安卓子控件抢占父控件点击事件或者焦点问题 开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者C 阅读详情

ImageButton和Button不设置点击事件也会拦截父View的点击事件


在layout中,即使不对ImageButton和Button设置点击事件,当点击ImageButton和Button时,也会导致父View的点击无响应。

layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    
    <LinearLayout 
        android:id="@+id/layout1"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:orientation="vertical"
        android:paddingLeft="30dp"
        android:paddingRight="30dp"
        android:background="#EEEED1">
        <ImageButton 
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:src="@drawable/ic_launcher"
            android:layout_gravity="center_horizontal"/>
    </LinearLayout>
    
      <LinearLayout 
        android:id="@+id/layout2"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:orientation="vertical"
        android:paddingLeft="30dp"
        android:paddingRight="30dp"
        android:layout_marginTop="10dp"
        android:background="#EEEED1">
        <Button 
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="Button"
            android:layout_gravity="center_horizontal"/>
    </LinearLayout>
    

</LinearLayout>


Activity:

public class MainActivity extends Activity{
	
	private LinearLayout layout1;
	private ImageButton imageButton1;
	
	private LinearLayout layout2;
	private Button button2;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		layout1 = (LinearLayout) findViewById(R.id.layout1);
		imageButton1 = (ImageButton) findViewById(R.id.button1);
		layout2 = (LinearLayout) findViewById(R.id.layout2);
		button2 = (Button) findViewById(R.id.button2);
		
		//即使ImageButton和Button不设置点击事件监听,也会拦截事件,导致父view获取不到点击
		layout1.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Toast.makeText(getApplicationContext(), "点击父1", Toast.LENGTH_SHORT).show();
			}
		});
		
//		imageButton1.setOnClickListener(new OnClickListener() {
//			@Override
//			public void onClick(View v) {
//				Toast.makeText(getApplicationContext(), "点击ImageButton", Toast.LENGTH_SHORT).show();
//			}
//		});
		
		//即使ImageButton和Button不设置点击事件监听,也会拦截事件,导致父view获取不到点击
		layout2.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Toast.makeText(getApplicationContext(), "点击父2", Toast.LENGTH_SHORT).show();
			}
		});
		
//		button2.setOnClickListener(new OnClickListener() {
//			@Override
//			public void onClick(View v) {
//				Toast.makeText(getApplicationContext(), "点击Button", Toast.LENGTH_SHORT).show();
//			}
//		});
		
	}

}

不论用FrameLayout 还是RelativeLayout,点击事件还是没响应。


手把手教你理解ARM SoC中的PPU:电源管理IP的配置与实战避坑指南 本文深入解析ARM SoC中的PPU(Power Policy Unit)电源管理IP,提供详细的配置指南与实战避坑技巧。从PPU基础架构、寄存器配置到与PCSM的协同工作,全面介绍如何优化电源管理策略,解决常见配置误区,并分享高级调试与性能优化方法,助力工程师提升低功耗SoC设计效率。 阅读详情

相关推荐

PyTorch ModelNet点云数据集加载实战:从下载到Dataset类完整实现

在三维视觉与点云处理领域,数据集是算法研发的基石。ModelNet作为三维物体分类的基准数据集,其地位类似于图像领域的MNIST,是入门和评估模型性能的通用标准。理解其数据格式与加载原理,是进行点云分类、分割等任务的关键前置步骤。通过PyTorch的Dataset类,开发者可以构建高效的数据管道,将原始点云文件转换为神经网络可直接处理的张量格式,这一过程涉及数据采样、归一化、特征组装等核心操作,直接影响模型的训练效率和最终性能。本文聚焦于ModelNet10/40数据集,详细解析其目录结构,并提供一套稳健的

weixin_29032337的博客 280

android开发如何让子View的事件交给其上层父View去处理呢?

如何让子View的事件交给其上层父View去处理呢? recyclerview的item项本身有点击事件,然后他的子view上的控件比如button、switch、seekbar、textview等等,有的时候需要这些控件各自有各自的点击事件,一般是通过回调接口的方式去实现。但有时候又不需要这些子控件有相应的事件产生,那么怎么办呢? 常规的方法是自定义父类的ViewGroup容器,然后去重写onInterceptTouchEvent,返回true。这样就将子类的事件全部拦截了,让父类自己去实现。需求能解

Kchiha的博客 3106

arcgis select by attributes一次选多个_视频:如何基于ArcGIS与GeoDa求莫兰指数和绘制莫兰散点图?...

莫兰指数是全域莫兰指数(Global Moran's I)的简称,是澳大利亚统计学家帕特里克·阿尔弗雷德·皮尔斯·莫兰(Patrick Alfred Pierce Moran),在1950年提出的。详细介绍,如下:莫兰指数取值范围在-1.0至1.0之间。当Moran's I >0时,表示空间正相关性,其值越大,空间相关性越明显;当Moran's I <0时,表示空间负相关性...

weixin_39948247的博客 1759

Android Button ImageButton 防止重复点击

Android Button ImageButton 防止重复点击防止button重复点击的方法有很多种1.把该按钮设为不可见,把loading的图标显示出来。2.先把按钮给屏蔽了,然后再让他点击...

qq_34290634的博客 544

Coze工作流实战:Coze一键生成沉浸式历史故事视频

【coze工作流实战】一键生成火爆的沉浸式历史故事视频!短短3分钟,顶替你3天的工作量!

bickys的博客 1004

避坑指南:在Ubuntu 20.04上从零部署IS-Fusion环境(含CUDA 11.1和PyTorch 1.10.1配置)

本文提供了在Ubuntu 20.04系统上从零部署IS-Fusion 3D目标检测环境的详细避坑指南。内容涵盖CUDA 11.1、PyTorch 1.10.1、spconv等核心组件的精确版本安装与兼容性配置,并指导如何准备nuScenes数据集及启动模型训练,旨在帮助研究者和开发者高效搭建稳定的多模态融合算法开发环境。

gitlab7runner的博客 551

Button与ImageButton的点击监听事件-onClick

Button与ImageButton自身都有一个onClick点击事件,通过自身的.setOnClickListener(OnClickListener)的方法添加点击事件。 所有控件都有一个OnClick事件。通过点击事件的监听可以实现点击后发生什么动作。 监听事件实现的几种方法: 1.匿名内部类 2.独立类的实现 3.接口的形式实现  一、匿名内部类的实现Button监听事件 1...

恒路君丶 7050

2025年最新Cesium学习示例:Cesium-Examples

2025年最新Cesium学习示例:Cesium-Examples

2403_88103571的博客 1010

Android开发:解决父子视图点击事件冲突问题

本文针对Android开发中父子视图点击事件冲突的问题,提出了两种解决策略。首先,通过重写`onTouchEvent`方法,实现自定义触摸事件处理逻辑,确保父视图在子视图被点击时也能接收到触摸事件。其次,利用Android的事件分发机制,将子视图的`clickable`属性设为`false`,使点击事件沿事件分发链传递至父视图。这两种方法都能有效解决父子视图点击事件冲突问题,确保应用能根据实际需求正确响应用户的操作。

iwork168的博客 488

人形机器人人机交互解决方案(2026完整版)

《人形机器人人机交互解决方案(2026完整版)》摘要 本项目针对2026年人形机器人产业爆发式增长需求,提出了一套完整的人机交互解决方案。方案包含十大核心模块(语音识别、情感识别、手势识别等),采用五层架构设计,实现多模态融合交互,响应时间≤32ms,准确率≥99%。覆盖制造业巡检、家庭服务等10大场景,适配20+主流机型。项目总投资4.1亿元,预期年营收8.2亿元,将申请专利120项,培养专业人才300人。通过技术创新解决当前交互体验生硬、安全可控性不足等痛点,助力我国人形机器人产业实现从"跟跑

随读手记 775

VINS-Fusion实战:从零搭建无人机视觉SLAM系统(附ROS配置全流程)

本文详细介绍了如何从零开始为无人机搭建基于VINS-Fusion的视觉SLAM系统。内容涵盖硬件选型(重点推荐双目相机与IMU搭配)、ROS环境配置、传感器标定、核心参数调优以及实际飞行测试与问题排解全流程,旨在帮助开发者实现稳定、精确的无人机自主定位与导航。

wasm7browser的博客 214

LinearLayout、RelativeLayout内部含有Button或者ImageButton点击事件失灵

一、我们先来了解一下View的事件传递 分发——dispatchTouchEvent:方法返回值为true表示事件被当前视图消费掉;返回为super.dispatchTouchEvent表示继续分发该类事件。 拦截——onInterceptTouchEvent:方法返回值为true表示拦截这个事件并交由自身的onTouchEvent方法进行消费;返回值为false表示不拦截,需要继续传递给子视图...

zh2393673281的博客 2226

Isaac Lab & GR00T N1 入门教程(七)人形机器人推理与技能学习策略基准测试

本文介绍了IsaacLab设计的工业机器人操作评估系统,包含两项任务:螺母倾倒(成功率91%)和排气管分拣(成功率95%)。系统支持通过IsaacGR00TN1模型进行策略闭环评估,提供完整的开发环境配置指南(需Ubuntu22.04、CUDA12.8等环境),数据集下载方式(HuggingFace平台托管),以及模型微调流程。评估支持并行化测试(建议10-30个并行环境),并给出详细硬件配置建议(推荐RTX A6000 Ada显卡)。文档还包含常见问题解决方案,特别说明当前暂不支持Blackwell GP

2506_90492529的博客 1118

Android开发避坑指南:ImageButton与ImageView、Button混用的那些“坑”

本文深入探讨了Android开发中ImageButton、ImageView和Button混用时的常见问题与解决方案。通过对比三者的核心特性、事件处理机制和性能差异,帮助开发者避免UI控件选择不当导致的交互失效、样式错乱等问题,特别针对ImageButton的使用场景提供了优化建议和决策指南。

weixin_30352645的博客 420

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

listview中button抢占焦点问题

解决办法Item xml 根节点添加 android:descendantFocusability="blocksDescendants" Button 设置 android:focusable="false" 这样点击Button 和ListView Item 可以分别响应自己的点击事件 开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview...

weixin_30394669的博客 147

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android ListView不响应OnItemClickListener解决办法

有时候,当ListView中的每一个item是自定义的View时,有可能会导致ListView的OnItemClickListener的listener无法调用,请看如下情况:   如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而 ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将

聚精会神搞建设 7268

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

使listview下的控件获取点击事件,android:descendantFocusability用法简析

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是But...

dixian5213的博客 213

GridView,ListView setOnItemClickListener不响应

在开发过程中遇到了ListView 、GridView的OnItemClickListener的事件无响应情况 原因是因为 listview、GridView 的子元素中包含了Button或者ImageButton之类的元素,button的优先级高于listview 、GridView 所以不能监听item的点击事件,被 ItemView 拦截了点击事件。 解决办法: item 的根节点...

guankai1990的专栏 1236

使用listview注意事项

项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件)此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。     

botele的博客 420

Android的开始之Button按钮控件

Event Listeners: onClick():通常没有返回值;或返回一个布尔类型的true:当前控件拦截该事件自己处理;false:交给父控件处理 onLongClick() package com.example.android_button; import android.support.v7.app.ActionBarActivity;import andro...

weixin_30906671的博客 194

listview点击的灵异事件(android:descendantFocusability用法简析)

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者C

上帝派来的逗比 1013

android:descendantFocusability用法简析 解决listview中子控件导致item不能获取焦点

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者C

gaidandan的专栏 748

Android Scrollview+Listview 实现不同条目点赞并计数功能及原理分析(2)

ok,到了第二篇博客,我们继续解决问题。 子view中的button等劫持了listview中item的clickListener。 OnClickListener接口的onClick方法中的View view参数究竟是什么 我们常在listview的item中设置自己喜欢的样式,这其中可能就会出现button和checkBox这样的控件,你可能会遇见item中的button拦截了listview的

WSRspirit的专栏 1648

android:控件焦点问题 descendantFocusability用法简析

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者C

flyingfox023的专栏 565

android:descendantFocusability用法简析

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者C

仲少dy 451
上一篇: 安卓自定义对话框(位置和大小)
下一篇: 安卓图片资源笔记
安卓鸟
博客等级 码龄15年 14粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值