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 >

win10任务栏文件夹设置成竖形列表样式

win10任务栏文件夹设置成竖形列表样式

ftzchina的博客 7079

SAP 财务快速记账之—G/L Item Fast Entry

SAP FICO 运维解决方案

lijinbao171022的博客 1647

自绘CListCtrl时发现ON_WM_MEASUREITEM_REFLECT和DrawItem(LPDRAWITEMSTRUCT lpMeasureItemStruct) 无响应

自绘CListCtrl时发现ON_WM_MEASUREITEM_REFLECT和DrawItem(LPDRAWITEMSTRUCT lpMeasureItemStruct) 无响应 一般情况下,我们都是在 dialog 里面 放一个 list 控件,然后 用自己的类绑定自己的自绘对象,如同下面: 1.  在 dialog 里面 加一个 list 列表 2. 然后 绑定这个列表 哈哈...

mfreesky的专栏 2170

从零解析特斯拉线圈:谐振变压器的核心原理与DIY实践

本文深入解析特斯拉线圈的工作原理与DIY实践,从LC振荡电路到电磁耦合,详细介绍了谐振变压器的核心原理。通过材料清单、绕制技巧和安全指南,帮助爱好者从零开始打造迷你闪电发生器,体验高压电子实验的独特魅力。

weixin_33670786的博客 491

【Google Play 上架】内部 / 封闭 / 开放 测试全解 — “只跑一个就能上架”?不行!

Google Play新规要求个人开发者账号在2023年11月13日后必须通过封闭测试(Closed testing)才能上架应用。封闭测试需要至少12名测试者连续14天保持参与状态,而内部测试和开放测试不能替代这一要求。三类测试轨道各有特点:内部测试用于快速内部验证,封闭测试是上架必经环节,开放测试面向更广泛用户但非必需。上架流程建议先内部测试修复问题,再启动封闭测试满足14天要求,最后申请生产发布。组织账号和早期个人账号可能不受此限制。开发者应提前规划测试人群,确保持续测试周期,并关注Play Cons

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 2799

CAD二次开发c# .net加载cui\cuix菜单文件

public static void LoadMyCui(string cuiFile) { Document doc = Application.DocumentManager.MdiActiveDocument; object oldCmdEcho = Application.GetSystemVariable("CMDECHO"); object oldFileDia = Application.GetSys..

2127

初学者入门YOLO目标检测:从懵圈到上手,这篇文章讲透所有核心(附学习路径+避坑指南)

目标:比如训练一个“检测苹果和橘子”的模型,或者“检测人脸”的模型;任务:学会用LabelImg标注数据,制作YOLO格式的数据集,用命令行训练模型;关键:不用追求高精度,能训练出一个能检测出目标的模型就行。很多初学者卡在入门阶段,不是因为智商不够,而是因为“想太多,做太少”——总觉得要把所有原理搞懂才能动手,结果越想越怕,最后放弃。先动手,再动脑。先跑通一个案例,获得成就感;再制作自定义数据集,训练简单模型;最后再回头去理解原理,优化模型。

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

Supreme小程序自动化抢购终端——源码架构与执行流程全解析

本系统是一套基于开发的桌面端小程序自动化抢购终端。把只有开发者能跑的脚本,包装成普通用户也能操作的桌面工具。参数自动捕获 → 商品多关键词检索 → sku/尺码/库存映射 → 多商品任务队列 → 定时/立即抢购 → 订单创建 → 支付参数拉取 → 本地服务生成支付链接 → 手机微信扫码付款这套 Supreme 抢购终端,表面上看是一个"下单工具"。但从工程角度审视,它已经具备了一个小型桌面自动化系统GUI 层:CustomTkinter 现代化界面,线程安全业务层:多商品队列、定时调度、任务编排。

猫敷雪 202

STM32F407中文手册

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值