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"/> <!-- 绑定点击方法 -->代码交互:
// 方式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类,因此有一些通用属性,掌握这些属性可以快速调整控件的外观和位置:
layout_width / layout_height:控件的宽和高,常用值:
wrap_content:包裹控件内容(控件大小由内容决定);
match_parent:匹配父布局(控件大小与父容器一致);
固定值:比如100dp(适合固定大小的控件,如图标)。
id:控件的唯一标识,格式为@+id/控件名,用于在代码中绑定控件;
background:控件背景,可设置颜色(#FFFFFF)、形状(drawable文件)、图片;
visibility:控件的可见性,常用值:
visible:可见(默认值);
invisible:不可见,但仍占据布局空间;
gone:不可见,且不占据布局空间。
实用技巧:
控件命名规范:采用“控件类型缩写+功能”,比如tvTitle(TextView标题)、btnSubmit(Button提交)、ivIcon(ImageView图标),便于代码维护;
尺寸单位:布局宽高用dp,文本大小用sp,避免屏幕适配问题;
资源复用:固定文本、颜色、尺寸等,优先放在strings.xml、colors.xml、dimens.xml中,便于统一修改和多语言适配;
避免过度嵌套:布局嵌套过多会影响界面渲染效率,优先使用ConstraintLayout(约束布局),减少嵌套层级。
四、总结
以上就是Android开发中最基础、最常用的UI控件,涵盖了“显示”和“交互”两大核心场景。对于新手来说,重点掌握「XML属性定义」和「代码交互逻辑」,多写示例、多调试,就能快速上手。
这些基础控件是搭建复杂UI的基石,后续的RecyclerView(列表)、ScrollView(滚动视图)等高级控件,都是在基础控件的基础上延伸而来。建议大家先熟练掌握这些基础用法,再逐步学习高级控件和自定义控件,循序渐进提升自己的UI开发能力~
