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示例

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"/&gt;  <!-- 绑定点击方法 -->

代码交互

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类,因此有一些通用属性,掌握这些属性可以快速调整控件的外观和位置:

  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开发能力~

相关推荐
Hesionberger1 小时前
LeetCode 78:子集生成全攻略
java·开发语言·数据结构·python·算法·leetcode·职场和发展
bzmK1DTbd1 小时前
Swagger API文档:Java RESTful服务的自动生成
java·开发语言·restful
G.晴天1 小时前
Linux常用命令练习流程
java·linux·运维·服务器·tomcat
身如柳絮随风扬2 小时前
Java对象在计算机中的执行原理:从JVM内存模型到对象创建全过程
java·开发语言·jvm
夕除2 小时前
spring boot
java·spring boot·后端
想唱rap2 小时前
传输层协议之UDP
java·linux·网络·c++·网络协议·mysql·udp
河西石头2 小时前
听AI的血的教训!PPOCRLabel部署与PyQt5的安装避坑-百分百成功!
开发语言·人工智能·python·pyqt5安装·ppocrlabel的部署
野生技术架构师2 小时前
我总结了这份2026最新版Java面试题库(背完这一套就够了)
java·开发语言·面试
AIGC设计所2 小时前
网络安全8大就业领域和待遇对比!
运维·开发语言·网络·安全·web安全·php