Android学习小Demo(22)带删除按钮的TextView

Android笔记——动态添加删除控件,及添加点击事件 为了让自己的酷欧天气有个能够根据数据库动态添加TextView和按钮来显示已添加城市的界面,便开始着手于如标题所示的一个小Demo。 效果如图,能同时动态添加Button和TextView,还能通过动态添加的点击事件同时删除被点击的Button和TextView。 add.gif <LinearLayout xmlns:android="http://schemas.android... 阅读详情

很多时候,会有一些很简单的需求,比如你利用一个Button弹出某个页面,选择了某个对象之后,你会将对象的某些属性,比如名称之类,显示在按钮上。

而紧跟着,又会想着,能不能把刚选择的对象给清掉,比如把按钮上的文字给去掉,这个时候,你就会希望,要是按钮后面还能够有多一个图标,一点击,就把当前控件的文字等清除掉就好了,并且还会对应的回调函数,让我们多处理一些事情,那多好。

很可惜,Android并没有提供现成的控件供我们这样使用,但换个角度想想,这又根本不可惜,因为我们可以自己来实现这样的效果呀,这是多有意思的一件事情啊。

即使有时候,实现很简单,只是做多一点点事情,但当我们把它实现了,满足的感觉依然会油然而生啊,对吧!

现在想做的事情就很简单,想自定义一个控件,实现功能如下:

1)实现像Button一样的点击效果

2)又能够在后面添加一个删除小图标,可删除此控件上的内容

3)还要有一个响应函数,能够在删除之后做一些操作。

我们知道,自定义控件有多种方式,我们可以直接继承View,自己去画各种各样的UI,也可以简单地继承已存在的控件,比如Button就是继承TextView的一个简单的控件。

提到Button就是继承TextView的,而TextView又有CompoundDrawable的概念,那很显然,我们就可以利用TextView来实现我们的功能了。

太啰嗦了,还是先上代码吧


public class ClearableTextView extends TextView {

    public interface OnTextClearListener {
        public void onTextClear(ClearableTextView v);
    }

    private Context mContext;
    private Drawable mDrawableRight;
    private Rect mBounds;

    private OnTextClearListener mOnTextClearListener;

    public ClearableTextView(Context context) {
        super(context);
        initialize(context);
    }

    public ClearableTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initialize(context);
    }

    private void initialize(Context context) {
        mContext = context;
        mDrawableRight = mContext.getResources().getDrawable(R.drawable.ic_delete);
        mDrawableRight.setBounds(0, 0, mDrawableRight.getMinimumWidth(), mDrawableRight.getMinimumWidth());
        setClickable(true);
        setMinWidth(120);
        setGravity(Gravity.CENTER_VERTICAL);
        setPadding(8, 8, 8, 8);
        setCompoundDrawablePadding(8);
    }

    @Override
    public 
Android匿名社交App开发实战:源码+视频教学 匿名社交是移动应用中兼具用户心理洞察与工程实现挑战的基础场景,其核心在于身份隔离、内容可控与交互可信。本文围绕Android平台轻量级匿名论坛原型,解析设备指纹生成、会话令牌管理、本地敏感词过滤等关键技术原理,强调MVC架构对新手的友好性与可调试性。项目以真实可运行源码和全流程演示视频为载体,覆盖从Android Studio环境配置、Room数据库操作到离线同步、图片加载避坑等高频实践问题,适用于课程设计、实训交付与快速原型验证。关键词涵盖Android开发、匿名社交、源码教学。 阅读详情

相关推荐

Android音乐播放器2.0:ExoPlayer架构重构与音频生命周期实践

音乐播放器不是UI组件堆砌,而是围绕音频生命周期构建的系统工程。其核心在于理解Android音频子系统原理——从AudioTrack缓冲机制、MediaSession状态管理,到AudioFocus焦点协议与设备变更监听。技术价值体现在稳定性(规避OOM/ANR/音频撕裂)、合规性(适配分区存储、Foreground Service、Target SDK 34)和可扩展性(ExoPlayer插件化渲染链)。典型应用场景包括车载音响SDK适配、后台持续播放、多端状态同步及弱网动态缓冲。本文聚焦生产就绪的And

weixin_30110543的博客 268

Android代码-安卓TextViewDemo

TextViewDemo 安卓实现关键字加红,点击字体打电话,textview斜体,电商删除线,绿色下划线,图片(表情,图文混排) 先看实例图 一,后台控制搜索关键字加红 1,后台写好对应html,后台负责显示什么颜色 txtInfo.setText( Html.fromHtml("一个<font>手机</font>手机号码是一直在流转的" "created in the Java source code using HTML.")); txtInfo.setMovementMethod(LinkMovementMethod.getInstance()); txtInfo2.setText( Html.fromHtml( "<b>加粗:</b> 点击这个超链接调到网站 " "<a >

新手必看!Cisco Packet Tracer 8.2从安装到完成第一个局域网实验(附常见问题解决)

本文为网络新手提供了Cisco Packet Tracer 8.2的完整入门指南。从官方下载安装、界面熟悉,到核心的拖拽设备、连线、配置IP地址三步操作,手把手教你完成第一个局域网组网实验。文章重点讲解了如何通过Ping命令验证连通性,并附带了连线错误、IP配置不当等常见问题的解决思路,帮助初学者快速上手这款强大的思科模拟器。

android的专栏 867

金融波动预测:GARCH模型实战解析与ARIMA对比

本文深入解析GARCH模型在金融波动预测中的实战应用,并与传统ARIMA模型进行对比。通过沪深300指数日收益率数据的案例分析,展示GARCH模型如何有效捕捉波动聚集效应,提升极端波动预测准确率。文章包含Python代码实现、参数解读及模型选择指南,为量化交易者提供实用的波动率建模解决方案。

weixin_29098367的博客 189

163种中草药图像数据集构建与ResNet-50迁移学习实战指南

在计算机视觉领域,高质量标注数据集是模型训练的基石,直接影响图像分类、目标检测等任务的性能。其核心原理在于为算法提供结构化的监督信号,通过深度学习模型学习从像素到语义的映射关系。构建此类数据集的技术价值在于解决了特定垂直领域(如中医药)数据稀缺的痛点,为AI技术落地提供了关键“燃料”。在应用场景上,标准化数据集广泛支撑着教学演示、算法验证和产业应用开发。本文聚焦于中草药识别这一细分领域,详细介绍了一个包含163种常见药材、经过多源聚合与清洗的图像数据集构建全过程,并提供了基于PyTorch和ResNet-5

weixin_33672400的博客 454

Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇

Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇 文章目录Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇前言一、数据库的安装前准备,前提是没有安装过!!!二、仅安装数据库软件(数据库运行环境)三、添加数据库实例四、设置监听程序,让数据库可以通过网络访问五、为目标数据库设置网名总结 前言 如果需要安装包:联系我看到会给你链接,因为现在官网已经不提供10g,11g的安装包了,在网盘保存望悉知(回复不会很及时,下班看到会回复敬请谅解)。 提示:以下

zhx__的博客 5630

SAP ABAP BAPI_PRODORD_CHANGE:动态刷新PP主数据的实战解析

本文深入解析了在SAP ABAP开发中,如何利用BAPI_PRODORD_CHANGE函数实现生产订单PP主数据的动态刷新。针对CO02事务码无法满足的后台自动化场景,详细讲解了通过设置explosion_date和explode_new等关键参数来强制重新读取BOM和工艺路线的实战方法,并提供了核心代码示例与避坑指南,确保生产订单信息与最新主数据同步。

weixin_29231027的博客 149

【Frida Android】实战篇8:客户端证书认证绕过 Hook 教程

通过重写类的方法,自定义证书校验逻辑;利用配置文件,从系统层面管理证书信任策略;以及通过 OkHttp 框架提供的方法,实现证书的强绑定校验。这些内容主要围绕客户端如何验证服务端证书的合法性展开。客户端证书认证。当 APK 预置了客户端证书,并且服务端会对客户端证书进行校验时,传统的中间人攻击方式将面临新的挑战。我们将深入分析这种场景的工作原理,并详细介绍如何通过技术手段获取客户端证书、配置中间人工具,最终成功实现抓包分析。

水滴石穿 1427

Android 10.0 kenel中修改rom系统内部存储的大小

在10.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,由于在产品后续订单中,有些产品是出口的,但是硬件方面已经定板,时间比较仓促,所以 就需要软件方面在rom内部存储的大小方面作假,修改rom真实的大小容量,所以就需要在kenel驱动部分来修改这部分的值最好了,接下来分析下计算rom容量的 相关代码,然后做出修改

安卓兼职framework和app工程师的博客 1404

推理引擎终极对决:TensorRT vs ONNX Runtime,YOLOv8速度差30%的核心原因与实操指南

若你使用NVIDIA GPU,且追求极致速度和低延迟,TensorRT是唯一选择,尤其是边缘设备和实时场景;若你需要跨硬件部署、快速验证原型,或预算有限(无需NVIDIA GPU),ONNX Runtime是性价比之王;对于YOLOv8这类检测模型,TensorRT的FP16/INT8量化是“免费的速度提升”,建议优先采用。最后提醒:推理引擎的优化是“细节决定成败”——同样的引擎,不同的预处理方式、显存配置、批大小,都会导致10%-20%的性能差异。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1026

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 跟面试官讲Binder(一)
下一篇: 跟面试官讲Binder(二)之关于AIDL的认识
linmiansheng
博客等级 码龄20年 507粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值