当前位置: 首页 > news >正文

Android?基础UI控件!!!

在开始之前,先明确一个核心原则:所有UI控件的使用,都离不开「布局文件(XML)定义」和「Java/Kotlin代码交互」两部分。XML负责控件的“外观”,代码负责控件的“行为”,两者结合才能实现完整的UI功能。另外,所有控件都继承自View类,因此它们有一些通用属性,比如id(唯一标识)、layout_width(宽度)、layout_height(高度)、background(背景)等,后续不再重复赘述。

一、基础显示类控件:负责“展示信息”

这类控件主要用于显示文本、图片等静态信息,不涉及用户交互,是界面中最基础的组成部分。

1. TextView(文本显示控件)

TextView是Android中最常用的控件,没有之一,主要用于显示文字,比如标题、说明文本、内容展示等。它的核心属性非常多,掌握常用的几个就能满足大部分场景需求。

核心属性

  • text:设置显示的文本内容,支持直接写字符串,也可引用strings.xml中的资源(推荐后者,便于多语言适配);

  • textSize:文本大小,必须使用sp作为单位(适配不同屏幕密度,避免字体大小失真);

  • textColor:文本颜色,支持十六进制颜色值、颜色资源;

  • textStyle:文本样式,可选bold(粗体)、italic(斜体)、bolditalic(粗斜体);

  • gravity:文本在控件内的对齐方式,比如center(居中)、left(左对齐)、right(右对齐);

  • maxLines:最大行数,避免文本过长导致界面错乱;

  • ellipsize:文本超出最大行数时的显示方式,常用end(末尾显示省略号)。

XML示例

<TextView android:id="@+id/tv_title" android:layout_width="wrap_content" <!-- 宽度包裹文本内容 --> android:layout_height="wrap_content" <!-- 高度包裹文本内容 --> android:text="@string/app_title" <!-- 引用字符串资源 --> android:textSize="18sp" android:textColor="#333333" android:textStyle="bold" android:gravity="center" android:maxLines="1" android:ellipsize="end" android:background="#FFFFFF"/>

代码交互

// 找到控件(通过id绑定) TextView tvTitle = findViewById(R.id.tv_title); // 动态修改文本 tvTitle.setText("新的标题"); // 动态修改文本颜色 tvTitle.setTextColor(ContextCompat.getColor(this, R.color.blue));

避坑提醒:textSize不要用dp或px,否则在不同屏幕上字体大小会不一致;如果文本是固定的,优先放在strings.xml中,便于维护和多语言适配。

2. ImageView(图片显示控件)

用于显示图片、图标、背景图等,是让界面更生动的核心控件。图片资源通常放在res/mipmap或res/drawable目录下(mipmap更适合图标,drawable适合普通图片)。

核心属性

  • src:设置要显示的图片资源,是ImageView的核心属性;

  • scaleType:图片缩放模式,决定图片如何适配控件大小,常用值如下:

    • centerCrop:等比例缩放,填充整个控件,超出部分裁剪(常用,避免图片拉伸变形);

    • fitCenter:等比例缩放,使图片完整显示在控件内,空白部分留空(默认值);

    • center:图片不缩放,居中显示,超出控件部分裁剪;

    • fitXY:拉伸图片,填满整个控件(不推荐,会导致图片变形)。

  • adjustViewBounds:是否自适应图片宽高比,设置为true时,控件会根据图片比例调整自身大小;

  • tint:图片着色,可快速改变图标的颜色,无需修改图片本身。

XML示例

<ImageView android:id="@+id/iv_icon" android:layout_width="100dp" android:layout_height="100dp" android:src="@mipmap/ic_launcher" <!-- 引用图标资源 --> android:scaleType="centerCrop" android:adjustViewBounds="true" android:tint="#888888"/>

代码交互

ImageView ivIcon = findViewById(R.id.iv_icon); // 动态修改图片 ivIcon.setImageResource(R.mipmap.ic_new_icon); // 动态设置图片着色 ivIcon.setColorFilter(ContextCompat.

避坑提醒:不要将图片放在drawable目录的根目录(未指定分辨率),建议创建drawable-xhdpi等目录,适配不同屏幕;scaleType的选择要根据图片用途,避免拉伸变形。

二、交互操作类控件:负责“响应用户操作”

这类控件是用户与App交互的核心,比如点击按钮、输入文本、选择选项等,需要结合代码实现交互逻辑。

1. Button(按钮控件)

继承自TextView,用于触发点击事件,比如提交表单、跳转页面、确认操作等。默认有系统样式,也可自定义背景和样式。

核心属性

  • text:按钮上显示的文本;

  • textAllCaps:是否自动将文本转为大写(默认true,可设置为false关闭);

  • background:按钮背景,可设置颜色、形状或图片;

  • onClick:直接在XML中绑定点击方法(简化代码,但不推荐用于复杂逻辑)。

XML示例

<Button android:id="@+id/btn_submit" android:layout_width="match_parent" <!-- 宽度匹配父布局 --> android:layout_height="wrap_content" android:text="提交" android:textSize="18sp" android:textColor="#FFFFFF" android:background="#3F51B5" android:textAllCaps="false" android:onClick="clickSubmit"/&gt; <!-- 绑定点击方法 -->

代码交互

// 方式1:XML绑定方法(需在Activity中定义对应方法) public void clickSubmit(View view) { Toast.makeText(this, "提交成功", Toast.LENGTH_SHORT).show(); } // 方式2:代码中设置点击监听(推荐,逻辑更灵活) Button btnSubmit = findViewById(R.id.btn_submit); btnSubmit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 点击逻辑:比如提交表单、跳转页面 startActivity(new Intent(MainActivity.this, ResultActivity.class)); } });

拓展:AppCompatButton是Button的兼容版,支持低版本Android系统,功能与Button一致,开发中建议优先使用AppCompatButton。

2. EditText(输入框控件)

继承自TextView,用于接收用户输入,比如账号、密码、备注等,支持多种输入类型限制。

核心属性

  • hint:输入提示文本,用户输入后会自动消失;

  • textColorHint:提示文本的颜色(通常设为浅灰色,与输入文本区分);

  • inputType:输入类型,用于限制用户输入内容,常用值:

    • text:普通文本输入;

    • number:只能输入数字;

    • textPassword:密码输入(输入内容会隐藏为圆点);

    • textEmailAddress:邮箱输入(会弹出邮箱键盘)。

  • maxLength:最大输入长度,避免输入内容过长;

  • singleLine:是否单行输入(设置为true,避免输入换行);

  • padding:输入框内边距,让文本与边框有一定距离,提升美观度。

XML示例

<EditText android:id="@+id/et_account" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入账号" android:textColorHint="#999999" android:inputType="text" android:maxLength="11" android:singleLine="true" android:padding="10dp"/> <EditText android:id="@+id/et_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码" android:textColorHint="#999999" android:inputType="textPassword" android:maxLength="16" android:singleLine="true" android:padding="10dp"/>

代码交互

EditText etAccount = findViewById(R.id.et_account); EditText etPassword = findViewById(R.id.et_password); // 获取用户输入的内容(需判断非空,避免空指针) String account = etAccount.getText().toString().trim(); String password = etPassword.getText().toString().trim(); // 清空输入内容 etAccount.setText(""); etPassword.setText(""); // 禁止输入(比如提交后禁用) etAccount.setEnabled(false);

避坑提醒:获取输入内容时,一定要调用trim()方法,去除首尾空格;密码输入时,不要用text属性存储,避免安全隐患。

三、通用属性与实用技巧

所有UI控件都继承自View类,因此有一些通用属性,掌握这些属性可以快速调整控件的外观和位置:

  1. layout_width / layout_height:控件的宽和高,常用值:

    1. wrap_content:包裹控件内容(控件大小由内容决定);

    2. match_parent:匹配父布局(控件大小与父容器一致);

    3. 固定值:比如100dp(适合固定大小的控件,如图标)。

  2. id:控件的唯一标识,格式为@+id/控件名,用于在代码中绑定控件;

  3. background:控件背景,可设置颜色(#FFFFFF)、形状(drawable文件)、图片;

  4. visibility:控件的可见性,常用值:

    1. visible:可见(默认值);

    2. invisible:不可见,但仍占据布局空间;

    3. gone:不可见,且不占据布局空间。

实用技巧

  • 控件命名规范:采用“控件类型缩写+功能”,比如tvTitle(TextView标题)、btnSubmit(Button提交)、ivIcon(ImageView图标),便于代码维护;

  • 尺寸单位:布局宽高用dp,文本大小用sp,避免屏幕适配问题;

  • 资源复用:固定文本、颜色、尺寸等,优先放在strings.xml、colors.xml、dimens.xml中,便于统一修改和多语言适配;

  • 避免过度嵌套:布局嵌套过多会影响界面渲染效率,优先使用ConstraintLayout(约束布局),减少嵌套层级。

四、总结

以上就是Android开发中最基础、最常用的UI控件,涵盖了“显示”和“交互”两大核心场景。对于新手来说,重点掌握「XML属性定义」和「代码交互逻辑」,多写示例、多调试,就能快速上手。

这些基础控件是搭建复杂UI的基石,后续的RecyclerView(列表)、ScrollView(滚动视图)等高级控件,都是在基础控件的基础上延伸而来。建议大家先熟练掌握这些基础用法,再逐步学习高级控件和自定义控件,循序渐进提升自己的UI开发能力~

http://www.jsqmd.com/news/765496/

相关文章:

  • 2026年户外新宠:免搭建充气帐篷,3秒自动撑开 - 品牌企业推荐师(官方)
  • 盛瀚的色谱柱怎么样?和进口品牌对比,差距or惊喜? - 品牌推荐大师1
  • 从手机充电头到主板供电:拆解3个实物,看NMOS和PMOS在真实电路里怎么选型
  • Windows系统VB6CHS.DLL文件丢失找不到无法启动程序解决
  • 别再写IF+HASONEVALUE了!Power BI中SELECTEDVALUE函数的3个实战用法(含动态标题)
  • 洛谷 P5149:会议座位 ← 归并排序 + 逆序对
  • 2026河北石家庄银元回收指南:素军奢品汇古钱币纸币纪念钞回收须知 - 品牌企业推荐师(官方)
  • 架构师技能图谱解析:从微服务到云原生的系统化成长路径
  • 3分钟拯救你的B站收藏:m4s-converter让你的缓存视频重获新生!
  • AD21信号线束实战:从原理图到PCB,如何用它简化复杂接口设计(以USB_PHY为例)
  • 长期主义者的选择:哪些品牌的激光扫描仪在恶劣环境下依然稳定? - 品牌推荐大师
  • 河北邯郸企业认定市级、省级、国家级企业技术中心有多少奖补?
  • 最新!2026 北京配眼镜推荐TOP5实测:高性价比之王+专业验光不踩雷 - 品牌企业推荐师(官方)
  • 2026年北京到西藏旅游团推荐:口碑好又靠谱的选择 - 品牌企业推荐师(官方)
  • 中望CAD许可不够用:国产替代后如何满足“大型图纸”的并发需求?
  • 保姆级教程:在Ubuntu 20.04 ROS Noetic上,用move_base让你的机器人学会自主导航(附完整代码包)
  • 3分钟快速备份你的QQ空间:GetQzonehistory完整备份指南
  • 如何用LinkSwift网盘直链下载助手提升你的下载效率
  • 别再乱删文件了!Win10清理软件后explorer.exe报错的深度分析与预防指南
  • 从订单表爆炸到性能起飞:拆解某大厂千万级日活业务的分库分表实战(附MyCat2配置)
  • GEO获客哪家好 - 品牌企业推荐师(官方)
  • 如何用QMCDecode快速解锁QQ音乐加密音频:免费Mac工具完整指南
  • 让本地的前端能被他人访问,一个免费域名的方式-Ngrok,支持MacOS、Windows、Linux、Docker等
  • 1K预算捡漏华为RH1288V3:手把手教你从开机到装好桌面(附BIOS配置避坑)
  • 告别硬件SPI引脚冲突:STM32软件模拟SPI驱动RC522的移植指南与性能实测
  • AI大模型求职避坑指南:给普通人的“职场邪修”秘籍,收藏备用!
  • 企业内网系统通过Taotoken代理安全稳定调用外部大模型API
  • 基于S2I的PHP容器化构建:sclorg/s2i-php-container项目实战解析
  • FF14智能钓鱼计时器终极指南:渔人的直感完整使用教程
  • 收到Isight侵权通告?许可倍增技术让您用现有许可化解风险