在开始之前,先明确一个核心原则:所有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示例:
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"/>
代码交互:
java
// 找到控件(通过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示例:
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"/>
代码交互
java
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示例:
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"/> <!-- 绑定点击方法 -->
代码交互:
java
// 方式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示例:
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"/>
代码交互:
java
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开发能力~