Android Don‘t Press With Parent Button按钮效果代码实现

1、需求效果

在做书签界面的时候,点击listview时候,删除按钮不要反选(图一);点击删除按钮删除按钮要反选(图二在这里插入图片描述
),效果图如下所示:
在这里插入图片描述

2、代码实现

2.1、java

package com.eebbk.synstudy.bookmark;import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageButton;public class BookmarkSpecialButtom extends ImageButton
{public BookmarkSpecialButtom( Context context ){super( context );}public BookmarkSpecialButtom( Context context, AttributeSet attrs ){super( context, attrs );}public BookmarkSpecialButtom( Context context, AttributeSet attrs, int 	defStyle){super( context,attrs, defStyle )// TODO Auto-generated constructor stub}@Overridepublic void setPressed( boolean pressed ){if( pressed 8& getParent( ) instanceof View && ( (View) getParent( ) ).isPressed( ) ){return;}super. setPressed( pressed ):}

在这里插入图片描述

2.2、XML

<?xml version="1.0” encoding="utf-8”?>
<LinearLayout xmlns:android="http://schemas. android. com/apk/res/android"android:layout_width=match_parentandroid:layout_height=wrap_contentandroid:orientation="horizontal” ><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="106dip”android:gravity=center_verticalandroid:padding_Left="30dipandroid:padding_Right=”30dip”><ImageViewandroid:id="@+id/bookmark_flagandroid:layout_width="wrap_content"android:lavout_height="wrap_contentandroid:lavout alignParentLeft="trueandroid:src=”@drawable/bookmark_flag”/><LinearLavoutandroid:layout_width="match parent”android:layout_height="wrap_contentandroid:layout_marginLeft="20dip"android:layout_toLeftOf="@+id/bookmark del"android:layout_toRightOf="@id/bookmark flagandroid:orientation="vertical” ><TextViewandroid:id="@+id/bookmark_content"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@android;color/black"android:textSize="20sp"/><Texttiewandroid:id="@+id/bookmark_time"android:layout_width="wrap_content"android:lavout_height="wrap_content"android:textColor="@android:color/darker_gray"android:textSize="16sp"/></LinearLayout><com.eebbk.swstudv.bookmark.BookmarkSpecialButtonandroid:id="@+id/bookmark_del"android:layout_width="wrap_content"android:layout_height="wrap_content"android:lavout_alignParentRight="true"android:background="@drawable/del_selector"/></RelativeLayout>
</LinearLavout>

在这里插入图片描述

3、总结

可以在setPressed方法中进行事件拦截,通过覆盖setPressed方法来实现。当按钮被按下时,我们可以在setPressed方法中进行自定义处理,并控制事件是否向上传递。不过,setPressed方法主要用于更新视图的状态,而不是直接处理触摸事件,因此这种方法通常不是直接用于事件拦截,但可以结合其他方法来实现目的。

解释
setPressed方法:覆盖setPressed方法,我们可以在按钮状态改变时执行自定义逻辑,但不直接用于事件拦截。
onTouchEvent方法:在onTouchEvent方法中,我们拦截按下和松开的事件(ACTION_DOWN和ACTION_UP),通过返回true表示这些事件已被消费,不会向上传递。
事件消费:通过onTouchEvent方法中的逻辑,我们确保按钮的触摸事件被自身处理,而不会传递给其父布局。
这种实现方式确保了按钮在被按下时能够拦截触摸事件,并通过setPressed方法更新按钮的状态,实现“Don’t Press With Parent Button”的效果。

觉得本文对您有用,麻烦点赞、关注、收藏,您的肯定是我创作的无限动力,谢谢!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/838195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简述下JVM的组成和工作原理

JVM&#xff08;Java Virtual Machine&#xff09;是Java运行的核心环境&#xff0c;它负责执行Java程序并管理相关的系统资源。以下是JVM的组成和工作原理的详细解释&#xff1a; JVM的组成 JVM主要由以下几个部分组成&#xff1a; 类加载器&#xff08;Class Loader&#…

书籍阅读-《Kubernetes快速入门》-读后感

建立和管理Kubernetes集群是一个涉及多个组件和步骤的过程。如何建立一个基本的Kubernetes集群&#xff0c;以及如何进行基本管理&#xff1a; 1. 准备基础设施 首先&#xff0c;您需要准备硬件或云资源。可以选择在本地使用物理或虚拟机&#xff0c;或者在云平台&#xff08…

Echarts使用

介绍 ECharts 是一个强大的&#xff0c;基于 JavaScript 的开源数据可视化库&#xff0c;适用于创建多种类型的图表&#xff0c;满足广泛的业务需求。它由百度团队开发并维护&#xff0c;后来捐赠给了 Apache 软件基金会&#xff0c;并已在2021年从孵化项目毕业&#xff0c;成…

Java 插入数据到Elasticsearch中进行各种类型文档的内容检索

源码下载&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1D3yszkTzjwQz0vFRozQl2g?pwdz6kb 提取码&#xff1a;z6kb 实现思路 1.搭建一个新的springboot项目&#xff0c;不会的请看我这篇博客&#xff1a;springboot项目搭建 2.添加maven依赖 <dependency><…

牛客周赛 Round 42(C:小红的素数合并)

题目链接: C-小红的素数合并_牛客周赛 Round 42 (nowcoder.com) 题目简述: 给你n个素数&#xff0c;让你每两个素数进行合并成一个(这两个素数相乘后的值)&#xff0c;必须要合并到最后不能再去合并&#xff0c;问最后合并后的数组的最大值和最小的差最小是多少呢? 分析: …

计算机毕业设计源码 | 基于SpringBoot的线上教学系统 答疑辅导网站(附源码)

1&#xff0c;项目介绍 1.1 项目背景 网络问答平台经历了多年的发展&#xff0c;目前处于一个日益成熟的状态。最早的网络问答平台是知乎&#xff0c;知乎的创立者认为有许多信息在互联网上没有被记录和共享&#xff0c;于是他们决定创造一个平台&#xff0c;能够让更多人可以…

【翻译】Processing系列|(四)用 Android Studio 从 0 到 1 进行 Processing 安卓开发

原文链接&#xff1a;Processing for Android Developing with Android Studio 朋友跟我说官方教程里也写了该怎么用 Android Studio 开发&#xff0c;并且亲测可行。这种方式确实能开发出结构更加清晰、额外组件更加少的程序&#xff0c;比上一篇文章中直接克隆 Processing-An…

QtMsBuild并行编译

记录一个QtMsBuild并行编译的报错问题&#xff0c;需求是支持同时进行多个vsqt的工程进行编译&#xff0c;使用的是msbuild.exe工具编译sln工程&#xff0c;同时编译时&#xff0c;有的工程会报Qt::BuildLock timeout&#xff0c;主要原因是Qt的编译脚本为了防止出现资源冲突&a…

C# WinForm —— 21 RichTextBox 使用

1. 加载文件到控件中 加载文件时&#xff0c;要设置文件的路径和类型RichTextBoxStreamType&#xff0c;文件类型包含&#xff1a; RichText 0&#xff1a;富文本格式&#xff08;RTF&#xff09;流PlainText 1&#xff1a;纯文本流对象链接和嵌入&#xff08;OLE&#xff…

基于RK3568的鸿蒙通行一体机方案项目

鸿蒙通行一体机方案以鸿蒙版AIoT-3568X人工智能主板为核心平台&#xff0c;搭载OpenHarmony操作系统&#xff0c;使用自研算法和国产芯片&#xff0c;可管可控&#xff0c;并提供身份识别以及其他外设配件生态链支持。 01 项目概述 项目使用场景 鸿蒙版通行一体机方案凭借自主…

win11此电脑右键“属性“选项,无法打开怎么解决?

方法如下&#xff1a; 1. 按【 Win X 】组合键&#xff0c;或【 右键】点击任务栏上的【 Windows开始菜单】&#xff0c;在打开的隐藏菜单项中&#xff0c;选择【 终端管理员】&#xff1b; 2. 用户账户控制窗口&#xff0c;你要允许此应用对你的设备进行更改吗&#xff1f;点…

深入 Go 语言:使用 math/rand 包实现高效随机数生成

深入 Go 语言&#xff1a;使用 math/rand 包实现高效随机数生成 介绍math/rand 包的核心功能设计哲学应用场景 基础使用方法初始化和种子设置设置种子创建私有随机数生成器 基础函数详解生成整数生成特定范围的整数生成浮点数随机置乱数组 进阶技巧随机数的统计属性生成正态分布…

分布式系统的一致性与共识算法(一)

前言 etcd是线性一致性读&#xff0c;而zk却是顺序一致性读&#xff0c;再加上各种共识、强弱一致的名词&#xff0c;看到欸度时候总会混淆&#xff0c;这里会给出一些例子来帮助理解。 什么是一致性&#xff1f; 在谈到一致性这个词时&#xff0c;你会想到CAP理论的consist…

高级炫酷的个人主页or引导页

高级炫酷个人主页 效果图部分代码领取源码下期更新预报 效果图 部分代码 <!DOCTYPE html><html lang"zh-CN"><head><meta charset"utf-8"><meta content"yes" name"apple-mobile-web-app-capable"> &l…

shiro_attack工具-shiro反序列化漏洞的快速检测和利用

shiro反序列化漏洞的快速检测和利用 前言 今天分享一个好用的渗透测试工具&#xff0c;主要是针对shiro框架漏洞的&#xff0c;它可以自动的爆破shiro密钥&#xff0c;同时可以写入大马&#xff0c;本人实战中觉得很好用&#xff01;&#xff01;&#xff01; 工具名称 shi…

2024年网络安全威胁

随着2024年的到来&#xff0c;数字世界的版图正在以前所未有的速度扩张&#xff0c;引领我们进入一个技术革新的新时代。然而&#xff0c;这飞速的发展同时也催生了一系列错综复杂的网络安全挑战。在这个数字平台与我们生活日益紧密交织的时代&#xff0c;深入了解这些新兴的威…

相约蓉城 | 全视通邀您参加 CHCC 2024第25届全国医院建设大会

第25届全国医院建设大会暨国际医院建设、装备及管理展览会&#xff08;CHCC2024&#xff09;&#xff0c;将于5月17日-19日在成都中国西部国际博览城盛大启幕。 全视通将携智慧病房、智慧门诊、智慧手术室、智慧后勤、智慧康养等产品方案亮相11号厅K05展位&#xff0c;期待与您…

乡村振兴与农村基础设施建设:加大投入力度,提升建设水平,完善农村基础设施网络,打造宜居宜业的美丽乡村

一、引言 乡村振兴战略是我国在新时代推进农业农村现代化的重大战略部署&#xff0c;其核心目标是实现乡村的全面振兴&#xff0c;促进农业强、农村美、农民富。农村基础设施建设作为乡村振兴的基石&#xff0c;其建设水平直接关系到乡村经济的持续健康发展、乡村环境的改善以…

vue-pure-admin项目内复制文字粘贴到word中之后存在边框问题

vue-pure-admin项目内复制文字粘贴到word中之后存在黑色边框是由于reset.scss文件内设置了通配符的border样式 修改前 代码 *, ::before, ::after {box-sizing: border-box;// 添加这个样式会导致复制的文字粘贴到word中带有边框问题border-color: currentColor;border-styl…

mxnet.image.resize_short()函数详解

mx.image.resize_short是MXNet中用于调整图像大小的一个函数。它将图像的短边调整到指定的长度&#xff0c;同时保持图像的宽高比。函数定义如下&#xff0c; mx.image.resize_short(src, size, interp2) src&#xff1a;输入的图像&#xff0c;可以是NDArray或者numpy.ndarr…