安卓常用的控件

人不走空

                                                                      

      🌈个人主页:人不走空      

💖系列专栏:算法专题

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

 

在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企业应用软件系统架构演变史 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-代理模式和装饰者模式

二者都是结构型的设计模式. 1.代理模式 1.1定义 为其他对象提供一种代理以控制对这个对象的访问. 代理从code实现方面分为静态代理和动态代理两种&#xff1b; 从适用范围来看,分为远程代理,虚拟代理,保护代理,智能引用几种. 远程代理:为某个对象在不同的内存地址空间提供…

Esxi硬件日志告警

原创作者&#xff1a;运维工程师 谢晋 Esxi硬件日志告警 故障描述故障处理 故障描述 主机报错硬件对象状态告警 在Esxi监控硬件内发现Systemctl Manager Module 1 Event log 0报警&#xff0c;该报警是Esxi事件日志保存空间满了&#xff0c;需要清理空间。 故障处理 开启…

实现第一个神经网络

PyTorch 包含创建和实现神经网络的特殊功能。在本节实验中&#xff0c;将创建一个简单的神经网络&#xff0c;其中一个隐藏层开发一个输出单元。 通过以下步骤使用 PyTorch 实现第一个神经网络。 第1步 首先&#xff0c;需要使用以下命令导入 PyTorch 库。 In [1]: import…

Android super.img结构及解包和重新组包

Android super.img结构及解包和重新组包 从Android10版本开始&#xff0c;Android系统使用动态分区&#xff0c;system、vendor、 odm等都包含在super.img里面&#xff0c;编译后的最终镜像不再有这些单独的 image&#xff0c;取而代之的是一个总的 super.img. 1. 基础知识 …

字节一年,人间三年

想来字节做研发&#xff0c;可以先看我这三年的体会和建议。 大家好&#xff0c;我是白露啊。 今天和大家分享一个真实的故事&#xff0c;是关于字节网友分享自己三年的工作经历和感受。 由于白露也曾在字节待过两年&#xff0c;可以说&#xff0c;说的都对。 你有没有想过来…

51-5 权限维持2 - 影子账号(隐藏用户)

权限维持技术 权限维持技术(Persistence,也称为权限持久化)是一种能够在系统重启、用户更改密码或其他可能导致访问中断的情况下保持对系统访问的技术。例如,它包括创建系统服务、利用计划任务、修改系统启动项或注册表、以及映像劫持等方法。 创建影子账户 影子账户是指隐…

目标检测入门:3.目标检测损失函数(IOU、GIOU、GIOU)

目录 一、IOU 二、GIOU 三、DIOU 四、DIOU_Loss实战 在前面两章里面训练模型时&#xff0c;损失函数都是选择L1Loss&#xff08;平均绝对值误差&#xff08;MAE&#xff09;&#xff09;损失函数&#xff0c;L1Loss损失函数公式如下: 由公式可知&#xff0c;L1Loss损失函数…

Midway Serverless 发布 2

可以看看优化后的开发情况&#xff0c;不仅和应用一样&#xff0c;速度还比较快&#xff0c;也不会生成临时目录&#xff0c;修改实时生效。 这是 v2.0 和 v1.0 的根本性变化&#xff0c;也是整体架构升级带来的巨大优势。 当然&#xff0c;这一块并不是功能的新增&#xff0c…

【C++】类和对象(中)--上篇

个人主页~ 类和对象上 类和对象 一、类的六个默认成员函数二、构造函数1、构造函数基本概念2、构造函数的特性 三、析构函数1、析构函数的概念2、特性 四、拷贝构造函数1、拷贝构造函数的概念2、特征 一、类的六个默认成员函数 如果有个类中什么成员都没有&#xff0c;那么被称…

Python从0到100(三十六):字符和字符集基础知识及其在Python中的应用

1. 字符和字符集概述 字符(Character)是构成书面语言的基本元素&#xff0c;它包括但不限于各国家的文字、标点符号、图形符号和数字。字符集(Character set)则是一个包含多个字符的系统&#xff0c;用于统一管理和编码不同的字符。 常见字符集 ASCII&#xff1a;最早的字符…

Truenas scale入坑

家里有一台刚上大学时配的电脑&#xff0c;看着无用武之地&#xff0c;又还能用&#xff0c;于是想那它来搞个私有云nas。 一、选择想要入的坑 一开始对这块没什么了解和概念&#xff0c;最早是在旧主机上安装了个Ubuntu&#xff0c;然后再安装CassOS小尝试了下。可能CassOS里…

【Apache Doris】周FAQ集锦:第 9 期

【Apache Doris】周FAQ集锦&#xff1a;第 9 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和…

eNSP-VLAN虚拟局域网

一、出现Vlan的原因 同一个局域网&#xff0c;使用交换机连接&#xff0c;虽然比集线器相连&#xff0c;降低了广播风暴&#xff0c;但是局域网主机数量够多的时候&#xff0c;正常的广播数据(arp、dhcp)也很影响网络性能&#xff0c;所以还需要进一步降低广播风暴——VLAN (图…

双指针算法:快速排序模拟实现

目录 1.思路解析 2&#xff1a;代码展示 1.思路解析 使用双指针pre和cur 指针cur用于检测符合条件的数据 cur和pre数据发生交换用于将符合条件的数据&#xff08;比key小&#xff09;向左扔 一轮循环结束时&#xff0c;以pre为分界点&#xff0c;除去key&#xff0c;pre左边的…

SpringMVC 的工作流程和详细解释

Spring MVC&#xff08;Model-View-Controller&#xff09;框架是基于经典的 MVC 设计模式构建的&#xff0c;用于开发 Web 应用程序。下面是 Spring Boot MVC 的工作流程和详细解释&#xff1a; 1.客户端发起请求 1.客户端&#xff08;通常是浏览器&#xff09;发起 HTTP 请求…

VUE Pinia状态持久化

效果 实现方法 插件&#xff1a;pinia-plugin-persistedstate 链接地址 具体操作 安装 npm i pinia-plugin-persistedstate 添加到 pinia 实例上 import { createPinia } from pinia import piniaPluginPersistedstate from pinia-plugin-persistedstateconst pinia cre…

自动化设备上位机设计 一

目录 一 设计原型 二 后台代码 一 设计原型 二 后台代码 namespace 自动化上位机设计 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}} }namespace 自动化上位机设计 {partial class Fo…

PDM与ERP物料编码技术在产品设计中的区别与应用

01 概 述 产品是企业赖以生存的基础&#xff0c;产品数据是企业最基本的也是最重要的数据&#xff0c;产品数据存在于产品设计、采购、生产、销售、服务、库存管理等全过程中。通过对产品设计数据进行编码&#xff0c;并增加采购、库存、生产、制造等属性信息&#xff0c;可以…

2.5 C#视觉程序开发实例1----设计一个IO_Manager

2.5 C#视觉程序开发实例1----设计一个IO_Manager 第一步目标&#xff1a; 1 实现获取IO触发信号Trig0 2 能够实现程序切换 3 图像处理后能够输出一个脉冲 1 IO 引脚定义 1.1 输入信号定义 1.2 输出信号定义 2 IO时序图 2.1 触发时序 2.2 切换程序时序图 3 IO_Manager.cs …