Android按钮Button

Button是程序用于和用户进行交互的一个重要控件。Button也是继承自TextView,既可以显示文本,又可以显示图片,二者在UI上的区别主要是 Button 控件有个按钮外观,提示用户单击。
在这里插入图片描述
图1 Button示意图
Button最主要的功能是通过单击来执行指定的操作,当用户单击Button后,Button会触发一个onClick事件,Android主要有以下三种监听并处理Button单击事件的方式。
1)在布局文件中指定onClick属性的方式设置单击事件。可以在布局文件中指定onClick属性的值来设置Button控件的单击事件,示例代码如下:

<Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="92dp"android:layout_marginTop="95dp"android:text="Button"android:onClick="click"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />

上述代码中,Button控件指定了onClick属性值为“click”,则在Activity中定义实现单击事件的方法名必须定义为“click”,与onClick属性的值(click)保持一致,代码如下:

public void click(View view) {//此次添加点击事件响应}

2)使用匿名内部类的方式设置单击事件。在Activity中,可以使用匿名内部类的方式为Button设置单击事件,代码如下:

Button button = findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//此次添加点击事件响应}
});

上述代码中,通过为Button控件设置setOnClickListener()方法实现对Button控件单击事件的监听。setOnClickListener()方法中传递的参数是一个匿名内部类。如果监听到按钮被单击,那么程序会调用匿名内部类中的onClick()方法实现Button控件的单击事件。
3)Activity实现OnClickListener接口的方式设置单击事件。将当前Activity实现View.OnClickListener接口,同样可以为Button控件设置单击事件,示例代码如下:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = findViewById(R.id.button);button.setOnClickListener(this);}@Overridepublic void onClick(View view) {//此次添加点击事件响应}
}

上述代码中,MainActivity通过实现View.OnClickListener接口中的onClick()方法来设置单击事件。需要注意的是,必须调用Button控件的setOnClickListener()方法设置单击监听事件,否则,Button控件的单击事件onClick()方法不会生效。
实现Button控件的单击事件的三种方式中,前两种方式适合界面上Button控件较少的情况,界面上Button控件较多时,建议使用第三种方式实现控件的单击事件。

做最简单的安卓入门教程,手把手视频、代码、答疑、教材全配齐;帮助每个想学习的人,学会安卓开发。
节选自《Android应用开发项目式教程》,机械工业出版社,2024年7月出版

在这里插入图片描述

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

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

相关文章

K折交叉验证代码实现——详细注释版

正常方法 #---------------------------------Torch Modules -------------------------------------------------------- from __future__ import print_function import numpy as np import pandas as pd import torch.nn as nn import math import torch.nn.functional as …

基于潜空间搜索的策略自适应组合优化(NeurIPS2023)(未完)

文章目录 Abstract1 Introduction2 Related work3 Methods3.1 预备知识3.2 COMPASS4 Experiments4.1 TSP、CVRP和JSSP的标准基准测试4.2 对泛化的鲁棒性:解决变异实例4.3 搜索策略分析5 ConclusionAbstract 组合优化是许多现实应用的基础,但设计高效算法以解决这些复杂的、通…

MongoDB Shell 基本命令(三)生成学生脚本信息和简单查询

一、生成学生信息脚本 利用该脚本可以生成任意个学生信息&#xff0c;包括学号、姓名、班级、年级、专业、课程名称、课程成绩等信息&#xff0c;此处生成2万名学生&#xff0c;学生所有信息都是给定范围后随机生成。 生成学生信息后&#xff0c;再来对学生信息进行简单查询。…

关于武汉芯景科技有限公司的限流开关芯片XJ6241开发指南(兼容LTC4411)

一、芯片引脚介绍 1.芯片引脚 二、系统结构图 三、功能描述 1.CTL引脚控制VIN和VOUT的通断 2.CTL引脚控制STAT引脚的状态 3.输出电压高于输入电压加上–VRTO的值&#xff0c;芯片处于关断状态

Artistic Oil Paint 艺术油画着色器插件

只需轻轻一点&#xff0c;即可将您的视频游戏转化为艺术品&#xff01;&#xff08;也许更多…&#xff09;。 ✓ 整个商店中最可配置的选项。 ✓ 六种先进算法。 ✓ 细节增强算法。 ✓ 完整的源代码&#xff08;脚本和着色器&#xff09;。 ✓ 包含在“艺术包”中。 &#x1f…

【数组知识的扩展①】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” ArrayList在Java数组中的使用技巧 这篇博客灵感来源于某一天Aileen(&#x1f92b;)遇到了一道数组合并的题&…

python 文件防感染扫描

一、安装 首先&#xff0c;你需要安装 secplugs-python-client 库。你可以通过 pip 命令来安装&#xff1a; pip install secplugs-python-client确保你的 Python 环境已经正确设置&#xff0c;并且网络连接畅通&#xff0c;以便能够顺利安装。 二、基本用法 1. 初始化客户…

【记录】Windows|Windows 修改字体大全(Windows 桌面、VSCode、浏览器)

【记录】Windows&#xff5c;Windows 修改字体大全&#xff08;Windows 桌面、VSCode、浏览器&#xff09; 前言 最近从学长那里发现了一款非常美观的衡水体字体——Maple Mono SC NF。您可以通过以下链接下载该字体&#xff1a;https://github.com/subframe7536/maple-font/…

TiDB替换Starrocks:业务综合宽表迁移的性能评估与降本增效决策

作者&#xff1a; 我是人间不清醒 原文来源&#xff1a; https://tidb.net/blog/6638f594 1、 场景 业务综合宽表是报表生成、大屏幕展示和数据计算处理的核心数据结构。目前&#xff0c;这些宽表存储在Starrocks系统中&#xff0c;但该系统存在显著的性能瓶颈。例如&#…

Vue组件开发的属性

组件开发的属性&#xff1a; 1.ref属性&#xff1a; 如果在vue里&#xff0c;想要获取DOM对象&#xff0c;并且不想使用JS的原生语法&#xff0c;那么就可以使用ref属性 ref属性的用法&#xff1a; 1&#xff09;在HTML元素的开始标记中&#xff0c;或者在Vue子组件中的开始…

JVM、字节码文件介绍

目录 初识JVM 什么是JVM JVM的三大核心功能 JVM的组成 字节码文件的组成 基础信息 Magic魔数 主副版本号 其它基础信息 常量池 字段 方法 属性 字节码常用工具 javap jclasslib插件 阿里Arthas 初识JVM 什么是JVM JVM的三大核心功能 1. 解释和运行虚拟机指…

我的世界之合成

合成&#xff08;Crafting&#xff09;是一种在Minecraft中获得多种方块、工具和其他资源的方法。合成时&#xff0c;玩家必须先把物品从物品栏移入合成方格中。22的简易合成方格可以直接在物品栏中找到&#xff0c;而33的合成方格需要使用工作台或合成器来打开。 目录 1合成系…

LabVIEW智能螺杆空压机测试系统

基于LabVIEW软件开发的螺杆空压机测试系统利用虚拟仪器技术进行空压机的性能测试和监控。系统能够实现对螺杆空压机关键性能参数如压力、温度、流量、转速及功率的实时采集与分析&#xff0c;有效提高测试效率与准确性&#xff0c;同时减少人工操作&#xff0c;提升安全性。 项…

Ubuntu22.04 制作系统ISO镜像

第一步&#xff1a;安装软件-Systemback 1.如果已经添加过ppa&#xff0c;可以删除重新添加或者跳过此步 sudo add-apt-repository --remove ppa:nemh/systemback 2.添加ppa 我是ubuntu20&#xff0c;但这个软件最后支持的是 ubuntu16.04版本&#xff0c;所以加一个16版本…

C++ | Leetcode C++题解之第480题滑动窗口中位数

题目&#xff1a; 题解&#xff1a; class DualHeap { private:// 大根堆&#xff0c;维护较小的一半元素priority_queue<int> small;// 小根堆&#xff0c;维护较大的一半元素priority_queue<int, vector<int>, greater<int>> large;// 哈希表&#…

自动化测试实施过程中需要考虑的因素!

自动化测试是软件开发过程中不可或缺的一部分&#xff0c;它能够提高测试效率、减少人力成本&#xff0c;并确保软件质量的一致性。然而&#xff0c;自动化测试的实施并非没有挑战。为了确保自动化测试的有效性和可持续性&#xff0c;开发者需要综合考虑多种因素&#xff0c;包…

【CTF-SHOW】Web入门 Web14 【editor泄露-详】【var/www/html目录-详】

editor泄露问题通常出现在涉及文件编辑器或脚本编辑器的题目中&#xff0c;尤其是在Web安全或Pwn&#xff08;系统漏洞挖掘&#xff09;类别中。editor泄露的本质是由于系统未能妥善处理临时文件、编辑历史或进程信息&#xff0c;导致攻击者可以通过某种途径获取正在编辑的敏感…

EasyOCR——超强超便捷的OCR开源算法介绍与文本检测模型CRAFT微调方法

背景 最近在实际操作阿拉伯文小语种OCR功能的时候&#xff0c;尝试了诸多开源算法&#xff0c;但效果均不尽如人意。 说实在的&#xff0c;针对阿拉伯文的OCR开源算法&#xff0c;若仅仅是效果没那么优秀&#xff0c;比如识别率能有个70%80%&#xff0c;我还能微调微调&#…

【React系列三】—React学习历程的分享

一、组件实例核心—Refs 通过定义 ref 属性可以给标签添加标识 字符串形式的Refs 这种形式已经不再推荐使用&#xff0c;官方不建议使用 https://zh-hans.legacy.reactjs.org/docs/refs-and-the-dom.html#legacy-api-string-refs 回调形式的Refs <script type"te…

PostgreSQL中触发器递归的处理 | 翻译

许多初学者在某个时候都会陷入触发器递归的陷阱。通常&#xff0c;解决方案是完全避免递归。但对于某些用例&#xff0c;您可能必须处理触发器递归。本文将告诉您有关该主题需要了解的内容。如果您曾经被错误消息“超出堆栈深度限制”所困扰&#xff0c;那么这里就是解决方案。…