安卓常用的控件

人不走空

                                                                      

      🌈个人主页:人不走空      

💖系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

 

在Android开发中,控件(也称为视图或控件组件)是构建用户界面的基本元素。它们用于显示信息和与用户进行交互。控件可以是简单的按钮或文本框,也可以是复杂的列表或图表。《第一行代码——Android》这本书涵盖了大量的控件知识,帮助开发者创建丰富和响应式的用户界面。下面,我们将详细讲解一些常用的Android控件及其用法。

目录

      🌈个人主页:人不走空      

💖系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

常用控件

1. TextView

属性

示例

2. EditText

属性

示例

3. Button

属性

示例

4. ImageView

属性

示例

5. CheckBox

属性

示例

6. RadioButton 和 RadioGroup

属性

示例

7. Switch

属性

示例

8. ProgressBar

属性

示例

9. SeekBar

属性

示例

10. ListView

使用步骤

示例

11. RecyclerView

使用步骤

示例

12. WebView

属性

示例

自定义控件

创建自定义控件的基本步骤

示例

总结

作者其他作品:


 

常用控件

1. TextView

TextView 是一个用于显示文本的控件。它可以用来显示短句、段落或者标题。

属性
  • android:text: 设置显示的文本。
  • android:textSize: 设置文本的大小。
  • android:textColor: 设置文本的颜色。
  • android:gravity: 设置文本的对齐方式(如居中、左对齐、右对齐等)。
示例
 

xml

复制代码

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, Android!" android:textSize="18sp" android:textColor="#000000" android:gravity="center"/>

2. EditText

EditText 是一个可编辑的文本控件,用于接收用户输入。它通常用于表单、搜索框等需要用户输入文本的地方。

属性
  • android:hint: 设置提示文本,在用户输入前显示。
  • android:inputType: 设置输入类型(如文本、数字、密码等)。
  • android:text: 设置初始的输入文本。
示例
 

xml

复制代码

<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Enter your name" android:inputType="text"/>

3. Button

Button 是一个点击按钮控件,用于触发特定的操作或事件。

属性
  • android:text: 设置按钮上的文本。
  • android:onClick: 设置按钮点击时触发的事件处理方法。
示例
 

xml

复制代码

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click Me" android:onClick="onButtonClick"/>

在Activity中实现点击事件:

 

kotlin

复制代码

fun onButtonClick(view: View) { // 处理按钮点击事件 }

4. ImageView

ImageView 用于显示图片。它支持加载和显示各种格式的图片资源。

属性
  • android:src: 设置显示的图片资源。
  • android:scaleType: 设置图片的缩放类型(如适应、裁剪、填充等)。
示例
 

xml

复制代码

<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/sample_image" android:scaleType="centerCrop"/>

5. CheckBox

CheckBox 是一个复选框控件,允许用户在多项选择中进行选择。

属性
  • android:text: 设置复选框旁边的文本。
  • android:checked: 设置复选框的初始状态(是否选中)。
示例
 

xml

复制代码

<CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I agree" android:checked="false"/>

6. RadioButton 和 RadioGroup

RadioButton 是单选按钮,通常与 RadioGroup 一起使用,形成一组选项,用户只能选择其中一个。

属性
  • android:text: 设置单选按钮旁边的文本。
  • android:checked: 设置单选按钮的初始状态。
示例
 

xml

复制代码

<RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Option 1"/> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Option 2"/> </RadioGroup>

7. Switch

Switch 是一个切换开关控件,用于在开和关之间切换状态。

属性
  • android:textOn: 设置开状态时的文本。
  • android:textOff: 设置关状态时的文本。
  • android:checked: 设置开关的初始状态。
示例
 

xml

复制代码

<Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="On" android:textOff="Off" android:checked="true"/>

8. ProgressBar

ProgressBar 是一个进度条控件,用于显示任务的进度。

属性
  • android:indeterminate: 设置进度条是否为不确定模式(即加载中,不显示具体进度)。
  • android:max: 设置进度条的最大值。
  • android:progress: 设置当前进度。
示例
 

xml

复制代码

<ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminate="true"/>

9. SeekBar

SeekBar 是一个滑动条控件,允许用户在指定范围内选择一个值。

属性
  • android:max: 设置滑动条的最大值。
  • android:progress: 设置当前选定的值。
示例
 

xml

复制代码

<SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="50"/>

10. ListView

ListView 是一个用于显示滚动列表的控件,每个列表项可以是一个自定义的视图。

使用步骤
  1. 定义布局: 创建一个包含 ListView 的布局。
  2. 准备数据: 准备一个数据源(如数组或列表)。
  3. 创建适配器: 使用适配器将数据绑定到 ListView
  4. 设置适配器: 将适配器设置到 ListView 上。
示例
 

xml

复制代码

<ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/listView"/>

Activity 中使用 ListView

 

kotlin

复制代码

val listView: ListView = findViewById(R.id.listView) val items = arrayOf("Item 1", "Item 2", "Item 3") val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items) listView.adapter = adapter

11. RecyclerView

RecyclerView 是一个更灵活和高效的列表控件,可以替代 ListView。它支持布局管理器和视图持有者(ViewHolder)模式。

使用步骤
  1. 定义布局: 创建一个包含 RecyclerView 的布局。
  2. 创建适配器: 实现 RecyclerView.Adapter,定义数据和视图的绑定逻辑。
  3. 设置布局管理器: 选择适当的布局管理器(如 LinearLayoutManagerGridLayoutManager)。
  4. 设置适配器: 将适配器设置到 RecyclerView 上。
示例
 

xml

复制代码

<androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recyclerView"/>

Activity 中使用 RecyclerView

 

kotlin

复制代码

val recyclerView: RecyclerView = findViewById(R.id.recyclerView) recyclerView.layoutManager = LinearLayoutManager(this) recyclerView.adapter = MyAdapter(myItemList)

12. WebView

WebView 是一个可以加载和显示网页内容的控件。它支持显示HTML内容、执行JavaScript代码,并与网页进行交互。

属性
  • android:layout_width: 设置WebView的宽度。
  • android:layout_height: 设置WebView的高度。
  • android:id: 设置WebView的唯一标识符。
示例
 

xml

复制代码

<WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView"/>

Activity 中加载网页内容:

 

kotlin

复制代码

val webView: WebView = findViewById(R.id.webView) webView.loadUrl("https://www.example.com")

自定义控件

除了使用内置控件,Android还允许开发者创建自定义控件,以满足特定的需求。自定义控件可以继承已有的控件类(如 ViewViewGroup),然后重写绘制方法和事件处理方法。

创建自定义控件的基本步骤

  1. 继承已有控件: 创建一个类,继承自 ViewViewGroup
  2. 重写绘制方法: 在 onDraw 方法中定义控件的绘制逻辑。
  3. 处理事件: 在 onTouchEvent 方法中处理用户的交互事件。
  4. 添加自定义属性: 在 res/values 文件夹中定义自定义属性,并在控件中解析这些属性。

示例

创建一个简单的自定义圆形控件:

 

kotlin

复制代码

class CircleView(context: Context, attrs: AttributeSet?) : View(context, attrs) { private val paint: Paint = Paint() override fun onDraw(canvas: Canvas?) { super.onDraw(canvas) canvas?.let { paint.color = Color.BLUE val radius = min(width, height) / 2.0f it.drawCircle(width / 2.0f, height / 2.0f, radius, paint) } } }

在布局文件中使用自定义控件:

 

xml

复制代码

<com.example.myapp.CircleView android:layout_width="100dp" android:layout_height="100dp"/>

总结

掌握Android中的各种控件及其用法是创建丰富用户界面的基础。通过合理地使用这些控件,可以开发出功能强大且用户体验良好的应用程序。希望这篇博客能够帮助你更好地理解和使用Android的控件,如果有任何问题或想法,欢迎在评论区讨论!


作者其他作品:

【Java】Spring循环依赖:原因与解决方法

OpenAI Sora来了,视频生成领域的GPT-4时代来了

[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读

【Java】深入理解Java中的static关键字

[Java·算法·简单] LeetCode 28. 找出字a符串中第一个匹配项的下标 详细解读

了解 Java 中的 AtomicInteger 类

算法题 — 整数转二进制,查找其中1的数量

深入理解MySQL事务特性:保证数据完整性与一致性

Java企业应用软件系统架构演变史 

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

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

相关文章

MySQL之备份与恢复(三)

备份与恢复 逻辑备份还是物理备份 物理备份 物理备份有如下好处: 1.基于文件的物理备份&#xff0c;只需要将需要的文件复制到其他地方即可完成备份。不需要其他额外的工作来生成原始文件。2.物理备份的恢复可能就更简单了&#xff0c;这取决于存储引擎。对于MyISAM&#x…

C++_04

1、继承 1.1 基本概念 继承是面向对象编程&#xff08;OOP&#xff09;中的一个核心概念&#xff0c;特别是在C中。它允许一个类&#xff08;称为派生类或子类&#xff09;继承另一个类&#xff08;称为基类或父类&#xff09;的属性和方法。继承的主要目的是实现代码重用&…

康姿百德磁性床垫好不好,效果怎么样靠谱吗

康姿百德典雅款床垫&#xff0c;打造舒适睡眠新体验 康姿百德床垫是打造舒适睡眠新体验的首选&#xff0c;其设计能够保护脊椎健康&#xff0c;舒展脊椎&#xff0c;让您享受一夜好眠。康姿百德床垫的面料选择也非常重要&#xff0c;其细腻亲肤的针织面料给您带来柔软舒适的触…

如何在操作使用ufw设置防火墙

UFW&#xff08;简单防火墙&#xff09;是用于管理iptables防火墙规则的用户友好型前端。它的主要目标是使iptables的管理更容易。 在学习Linux的时候大家一般都会关心命令&#xff0c;Posix API和桌面等&#xff0c;很少会去了解防护墙。其实除了一些网络安全厂商提供的付费防…

交互案例:5大经典交互效果

文件格式&#xff1a;.rp&#xff08;请与班主任联系获取原型文档&#xff09; 文件名称&#xff1a;Axure交互案例&#xff1a;5大经典交互实现 文件大小&#xff1a;78.5 MB 文档内容介绍 五大经典交互包括&#xff1a; 图片手风琴 图片悬浮放大 详细说明切换 图片全屏查…

【Ubuntu noble】apt 无法安装软件 Unable to locate package vim

宿主机以及 docker 无法定位软件包 将 /etc/apt/sources.list.d/ubuntu.sources 修改为以下内容&#xff08;主要是 Suites 字段增加了noble noble-updates&#xff09; Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble noble-updates noble-backports Com…

无需启动工程造价司法鉴定的情形

第一&#xff0c;当事人在诉讼前已经对建设工程价款结算达成协议。如果当事人在诉讼前已经对建设工程价款结算已经达成协议&#xff0c;意味着工程价款的结算金额在诉讼前已经确定&#xff0c;按照上述归纳的关于工程造价司法鉴定程序的启动标准&#xff0c;则此时已无启动工程…

--7.4

7.4 Springboot 1、什么是 SpringBoot Starters 是一系列依赖关系的集合&#xff0c;因为它的存在&#xff0c;项目的依赖之间的关系对我们来说变得简单了。 2、SpringBootApplication 复合注解&#xff1a; EnableAutoConfigurationComponentScanConfiguration 3、Rest…

上位机GUI 第三弹

&#x1f60a; &#x1f60a; &#x1f60a; 从协议层面讲&#xff0c;地质单元相当重要&#xff0c;调试模式,我只能义命令发送的索引码作为,每个设备的区分方式,调试的情况&#xff0c;不在设备上设置任何东西&#xff0c;开机访问地址和端口就能用 因为懒&#xff0c;直接将…

【代码随想录】【算法训练营】【第55天】 [42]接雨水 [84]柱状图中最大的矩形

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 55&#xff0c;又是一个周一&#xff0c;不能再坚持~ 题目详情 [42] 接雨水 题目描述 42 接雨水 解题思路 前提&#xff1a;雨水形成的情况是凹的, 需要前中后3个元素&#xff0c;计算该元…

分治求解最大子数组

分治求解最大子数组 分治求解步骤 分&#xff1a;将数组分成左右两部分治&#xff1a;递归地求解左半部分和右半部分的最大子数组合&#xff1a;计算跨越中点的最大子数组&#xff0c;并取三者中的最大值 具体实现 分&#xff1a; 将数组A分成两部分 左半部分&#xff1a;从…

专业的TPM管理咨询公司有哪些特点?

专业的TPM管理咨询公司&#xff0c;作为现代企业管理和设备维护的重要合作伙伴&#xff0c;其特点不仅体现在技术能力和服务质量上&#xff0c;更在于其独特的经营理念和方法论。以下是专业TPM管理咨询公司所具备的显著特点&#xff1a; 一、全面的技术实力与深厚的行业经验 专…

迎接AI時代的新篇章:GPT-5 技術突破與未來展望

GPT-5 一年半後發布&#xff1f;對此你有何期待&#xff1f; 前言 在美國達特茅斯工程學院的一次採訪中&#xff0c;OpenAI 首席技術官米拉穆拉蒂透露&#xff0c;GPT-5 將在一年半後發布&#xff0c;並將其描述為從高中生智力水平躍升到博士生水平的飛躍。這一消息在科技界引…

Lambda表达式讲解

简介: Lambda表达式的使用场景非常广泛,主要包括函数式编程、集合操作、排序、线程编程、GUI事件处理、数据处理、Web开发等。 函数式编程:Lambda表达式是函数式编程的重要特性,可以用于替代传统的匿名内部类,简化代码,提高可读性。 集合操作:Lambda表达式可以与集合…

word 转pdf 中图片不被压缩的方法

word 转pdf 中图片不被压缩的方法 法1&#xff1a; 调节word 选项中的图片格式为不压缩、高保真 法2&#xff1a; 1: word 中的图片尽可能使用高的分辨率&#xff0c;图片存为pnd或者 tif 格式&#xff08;最高清&#xff09; 2: 转化为pdf使用打印机器&#xff0c;参数如下…

展开说说:Android四大组件之Service使用

Service一定要开启子线程才可以执行耗时任务吗&#xff1f;不完全是吧。 Service是Android系统中的四大组件之一&#xff0c;它是一种没有可视化界面&#xff0c;运行于后台的一种服务程序。属于计算型组件&#xff0c;用来在后台执行持续性的计算任务&#xff0c;重要性仅次于…

分子AI预测赛笔记

#AI夏令营 #Datawhale #夏令营 Taks1 跑通baseline 根据task1跑通baseline 注册账号 直接注册或登录百度账号&#xff0c;etc fork 项目 零基础入门 Ai 数据挖掘竞赛-速通 Baseline - 飞桨AI Studio星河社区 启动项目 选择运行环境&#xff0c;并点击确定&#xff0c;没…

台灯学生用哪个牌子最好?学生用台灯品牌排行榜分析

台灯学生用哪个牌子最好&#xff1f;护眼台灯在近年来成为家长和长时间使用电子设备人群关注的家电/学生产品。对于家中有孩子或经常面对电子屏幕的人士来说&#xff0c;很多人可能已经对这类产品有所了解并进行了购买。然而&#xff0c;部分家长对护眼台灯的认识还不够深入&am…

不同类型uORF对mORF翻译效率的影响

在您提供的文献《不同类型的uORF在真核生物基因表达中的调控潜力》中&#xff0c;对于不同类型的起始密码子的uORF及其对下游主开放阅读框&#xff08;mORF&#xff09;翻译效率的影响进行了详细的讨论。以下是这些影响的主要总结&#xff1a; uORF的起始密码子类型&#xff1a…

FFT 简单基础(matlab

使用 fs 进行采样&#xff0c;进行 N点FFT 选择显示0~N/21点的幅值 横坐标对应频率计算公式&#xff1a; fs * n / N 举个梨子&#xff1a; 频率2kHz采样1s&#xff0c;得到2000个点的序列y(n) 对序列y(n)做4096点的FFT 幅值响应对应的横坐标频率…