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,点击事件还是没响应。


家里摄像头录像存 NAS,空间爆满了怎么办?一招实现设定容量自动清理实现循环存储! 📷 家用摄像头录像久了会撑爆 NAS 吗?别担心,这篇文章教如何实现自动清理录像,释放 NAS 空间,避免爆盘🧹 阅读详情

相关推荐

Vivado ILA抓不到低频信号?试试Capture Control模式,保姆级配置教程(附PWM调试实例)

本文详细解析了Vivado ILA的Capture Control模式在低频信号捕获中的应用,特别针对PWM调试等场景提供保姆级配置教程。通过条件采样和时间拉伸技术,有效解决传统ILA采样在低频信号调试中的存储深度不足、关键信号丢失等问题,并附赠呼吸灯PWM的完整调试实例,帮助FPGA开发者提升调试效率。

weixin_42549451的博客 349

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

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

Kchiha的博客 3106

全网最详细 解决戴维南定理的详细推导

替代定理,戴维南定理详细证明

m0_52555753的博客 3万+

Android Button ImageButton 防止重复点击

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

qq_34290634的博客 544

YOLO模型在STM32微控制器上的部署:1.98M参数如何塞进嵌入式设备?

<think>我们根据内容生成不超过150字的摘要。内容主要是关于YOLO模型在STM32微控制器上的部署,包括STM32N6 NPU、模型量化、工具链、开源方案和架构设计。摘要需要简洁概括主要点。 字数限制:≤150字。需要包含关键信息:STM32N6运行YOLO,困难,方案(NPU、INT8量化、工具链),性能(34 FPS 9.4mJ)。结尾可能提到开源和生态。 写中文摘要。注意不超过150字。</think>本文探讨YOLO模型在STM32微控制器上的部署。集成NPU的STM32N6搭配轻量化YOL

2601_95807009的博客 255

【教程4>第6章>第3节】LS信道估计与均衡系统MATLAB仿真实现

1]姬国伟,葛利嘉,龙秀虹.基于LS信道估计的SC-FDE系统性能研究[J].军事通信技术, 2010(1):6.DOI:CNKI:SUN:JSTY.0.2010-01-013.在无线通信中,信号在空间传播时,随着传输距离增加,能量会逐渐扩散,导致信号幅度减小,即发生衰减。第四个图表示的是提取的信道估计值,可以看到,在不插值的前提下,得到的信道估计值基本接近真实的信道h。从第五个图可知,通过信道估计,对接收信号进行了校正和补偿。信道模型,先通过awgn加入噪声,然后乘以hreal,模拟通过信道。

FPGA/MATLAB学习教程/源码/项目合作开发 388

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

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

恒路君丶 7050

深度学习与西储大学轴承数据集(一)

西储大学数据集介绍

weixin_50642818的博客 1万+

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

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

iwork168的博客 488

【无人机路径规划】基于强化学习实现多无人机路径规划附matlab代码

1 简介 本文提出一种基于强化学习实现多无人机路径规划。​ 2 部分代码 % This is used to measure the path length, service rate and risk explosure for each UAVs %% parameters function [PL,ServiceRate,Risk]=measure global N2; % divide [0,1]*[0,1] map into N2*N2 grid when calcul

qq_59747472的博客 6905

实战避坑:基恩士KV8000 PLC与C#上位机链路通讯全流程实现(含ST代码+上位机源码)

本文详细讲解了基恩士KV8000 PLC与C#上位机的TCP链路通讯实现,从PLC端的ST代码编写、通讯配置,到上位机的通讯类封装、界面实现,再到实战避坑和性能优化,提供了完整的可复用方案。该方案已在实际产线项目中验证,支持实时数据采集和控制指令下发,稳定性和可靠性满足工业场景需求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1176

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

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

zh2393673281的博客 2226

Claude Code 常见安装失败问题与解决办法

摘要: Claude Code安装失败通常与环境、网络和权限问题有关,而非软件本身。主要误区包括:命令未识别(需检查PATH和终端重启)、网络连接失败(终端代理配置)、权限不足(系统安全限制)及账号认证问题。首次使用应避免复杂任务,建议从基础功能测试开始。快速自检可按终端重启→命令识别→网络→代理→权限→账号状态的顺序排查。理顺终端、网络和权限后,Claude Code运行将更稳定。 (150字)

sg_knight的专栏 6695

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

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

weixin_30352645的博客 420

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

listview中button抢占焦点问题

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

weixin_30394669的博客 147

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android ListView不响应OnItemClickListener解决办法

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

聚精会神搞建设 7268

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

使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、付费专栏及课程。

余额充值