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

TextView、EditText、Button 实战

一、项目初始化与布局基础设置

1. 新建Android项目

  • 打开Android Studio,选择「Empty Activity」模板
  • 设置项目基本属性:
    • 项目名称:可自定义(示例中为androidetext
    • 包名:示例中为com.example.androidetext
    • 保存路径:选择本地目录
    • 语言:Java
    • 最低SDK:根据需求选择(建议API 21及以上)

2. 线性布局基础配置

修改activity_main.xml,将线性布局设置为垂直,子组件对齐方式水平居中,设置内边距为50dp等:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"  <!-- 宽度匹配父容器 -->android:layout_height="match_parent" <!-- 高度匹配父容器 -->android:gravity="center_horizontal"  <!-- 子组件水平居中对齐 -->android:orientation="vertical"       <!-- 子组件垂直排列 -->android:padding="50dp">              <!-- 内边距50dp --><!-- 子组件将在这里添加 -->
</LinearLayout>

二、UI组件实现(XML布局)

3. 文本显示框(TextView)配置

添加一个TextView,使用字符串资源、置字体大小为20sp,文本颜色为#00f,工具提示文本等:

<TextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/androidtest1_html"  <!-- 引用strings.xml中的字符串资源 -->android:textColor="#000000"              <!-- 文本颜色(示例为黑色,可改为#00f) -->android:textSize="20sp"                  <!-- 字体大小20sp -->android:layout_marginTop="10dp"          <!-- 上内边距10dp -->android:textStyle="bold"                 <!-- 文本样式:粗体 -->android:gravity="center"                 <!-- 文本内部居中 -->tools:text="工具预览文本" />             <!-- 工具提示文本(仅预览显示) -->
  • 字符串资源定义(res/values/strings.xml):
<string name="androidtest1_html">初始文本内容</string>

4. 文本编辑框(EditText)实现

添加用户名和密码输入框,配置提示信息与基础样式:设置输入提示信息,最小高度48dp,忽略自动填表,外边距(上)为10dp等

用户名输入框
<EditTextandroid:id="@+id/editTextText"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"              <!-- 上外边距10dp -->android:ems="10"                             <!-- 宽度为10个字符 -->android:hint="@string/name_hint"             <!-- 提示文字(引用字符串资源) -->android:inputType="text"                     <!-- 输入类型:文本 -->android:minHeight="48dp"                     <!-- 最小高度48dp -->tools:ignore="AutoFill, VisualDensity" />    <!-- 忽略自动填表和文本尺寸检查警告 -->
密码输入框
<EditTextandroid:id="@+id/editTextTextPassword"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:ems="10"android:hint="@string/password_hint"         <!-- 密码提示文字 -->android:inputType="textPassword"             <!-- 输入类型:密码(输入内容隐藏) -->android:minHeight="48dp"tools:ignore="AutoFill, VisualDensity" />
  • 字符串资源补充:
<string name="name_hint">请输入用户名</string>
<string name="password_hint">请输入密码</string>

5. 按钮(Button)布局与配置

新建一个线性布局,设置控件高度为包裹内容,外边距(上)为10dp等

通过嵌套线性布局实现登录和注册按钮的排列:

<!-- 嵌套线性布局:包裹按钮 -->
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content">  <!-- 高度包裹内容 --><!-- 登录按钮 --><Buttonandroid:id="@+id/button"android:layout_width="0dp"         <!-- 宽度由权重分配 -->android:layout_height="wrap_content"android:layout_weight="2"          <!-- 权重为2(占比2/3) -->android:text="@string/login"       <!-- 按钮文字:登录 -->tools:ignore="VisualLintButtonSize" /><!-- 注册按钮 --><Buttonandroid:id="@+id/button2"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginLeft="10dp"   <!-- 左外边距10dp(与登录按钮间隔) -->android:layout_weight="1"          <!-- 权重为1(占比1/3) -->android:text="@string/register"    <!-- 按钮文字:注册 -->tools:ignore="VisualLintButtonSize" />
</LinearLayout>
  • 字符串资源补充:
<string name="login">登录</string>
<string name="register">注册</string>

6. 带链接识别的TextView

添加自动识别链接(网址、电话等)的文本框:

<TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="50dp"  <!-- 上外边距50dp -->android:autoLink="all"           <!-- 自动识别所有类型链接(网址、邮箱、电话等) -->android:text="@string/about" />  <!-- 文本内容(例如:"官网:https://example.com 电话:123456") -->

7. 带阴影效果的TextView

配置阴影属性实现文本阴影效果:

<TextViewandroid:id="@+id/textView3"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:gravity="center"android:shadowColor="#f00"       <!-- 阴影颜色(红色) -->android:shadowDx="5"             <!-- 阴影水平偏移量5dp -->android:shadowDy="5"             <!-- 阴影垂直偏移量5dp -->android:shadowRadius="5"         <!-- 阴影模糊半径5dp -->android:textColor="#f00"         <!-- 文本颜色(红色) -->android:textSize="50sp"android:text="@string/show" />   <!-- 文本内容 -->

8. 带变形效果的TextView

通过属性设置实现旋转、缩放、平移等变形效果:

<TextViewandroid:id="@+id/textView4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:alpha="0.5"              <!-- 透明度50%(0-1之间) -->android:rotation="120"           <!-- 2D平面旋转120度 -->android:rotationX="60"           <!-- 绕X轴3D旋转60度 -->android:rotationY="30"           <!-- 绕Y轴3D旋转30度 -->android:scaleX="10"              <!-- 水平方向放大10倍 -->android:scaleY="5"               <!-- 垂直方向放大5倍 -->android:translationX="100dp"     <!-- 水平平移100dp -->android:translationY="50dp"      <!-- 垂直平移50dp -->android:text="@string/transforms" />  <!-- 文本内容 -->

三、Java代码逻辑实现

9. 初始化组件与修改文本(HTML样式)

MainActivity.java中,通过代码修改TextView内容并设置HTML样式:

package com.example.androidetext;import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); // 加载布局文件// 初始化TextView并修改内容(HTML样式)TextView textView = findViewById(R.id.textView);// 使用Html.fromHtml()解析HTML标签,将"HTML"设置为红色textView.setText(Html.fromHtml("替换为<font color='red'>HTML</font>文档", Html.FROM_HTML_MODE_COMPACT));}
}

10. 按钮点击事件与登录注册功能

实现登录和注册按钮的点击监听,处理业务逻辑:

import android.view.View;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {// 声明EditText变量private EditText editText;       // 用户名输入框private EditText editPassword;   // 密码输入框@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 初始化EditText组件editText = findViewById(R.id.editTextText);editPassword = findViewById(R.id.editTextTextPassword);// 注册按钮点击事件:显示提示(未开放功能)findViewById(R.id.button2).setOnClickListener(v -> Toast.makeText(this, "暂时未开放注册功能", Toast.LENGTH_SHORT).show());// 登录按钮点击事件:调用login()方法处理登录逻辑findViewById(R.id.button).setOnClickListener(this::login);}// 登录逻辑处理方法private void login(View view) {// 获取输入的用户名和密码String userName = editText.getText().toString();String password = editPassword.getText().toString();// 校验输入if (userName.isEmpty()) {Toast.makeText(this, "请输入用户名", Toast.LENGTH_SHORT).show();return; // 终止方法,不继续执行} else if (password.isEmpty()) {Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();return;}// 验证账号密码(示例:admin/1234)if (userName.equals("admin") && password.equals("1234")) {Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();} else {Toast.makeText(this, "用户名或密码错误", Toast.LENGTH_SHORT).show();}}
}

完整代码如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_horizontal"android:orientation="vertical"android:padding="50dp"><TextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/androidtest1_html"android:textColor="#000000"android:textSize="20sp"android:gravity="center" /><!--    <TextView-->
<!--        android:id="@+id/textView"-->
<!--        android:layout_width="match_parent"-->
<!--        android:layout_height="wrap_content"-->
<!--        android:text="@string/title"-->
<!--        android:textColor="#E64B4B"-->
<!--        android:textSize="20sp"-->
<!--        tools:text="运行不显示" />--><!--android:hint 用于定义当输入框为空时显示的提示文字 当用户开始输入内容时,提示文字会自动消失
--><EditTextandroid:id="@+id/editTextText"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:ems="10"android:hint="@string/name_hint"android:inputType="text"android:minHeight="48dp"tools:ignore="AutoFill, VisualDensity" /><EditTextandroid:id="@+id/editTextTextPassword"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:ems="10"android:hint="@string/password_hint"android:inputType="textPassword"android:minHeight="48dp"tools:ignore="AutoFill, VisualDensity" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/button"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="2"android:text="@string/login"tools:ignore="VisualLintButtonSize" /><Buttonandroid:id="@+id/button2"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:layout_weight="1"android:text="@string/register"tools:ignore="VisualLintButtonSize" /></LinearLayout><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:autoLink="all"android:text="@string/about" /><TextViewandroid:id="@+id/textView3"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:gravity="center"android:shadowColor="#f00"android:shadowDx="5"android:shadowDy="5"android:shadowRadius="5"android:textColor="#f00"android:textSize="50sp"android:text="@string/show" /><!--    android:alpha="0.5": 设置控件透明度为 50%(0-1 之间,0 为完全透明,1 为完全不透明)-->
<!--    android:rotation="120": 控件在 2D 平面上旋转 120 度-->
<!--    android:rotationX="60": 控件绕 X 轴旋转 60 度(3D 效果)-->
<!--    android:rotationY="30": 控件绕 Y 轴旋转 30 度(3D 效果)-->
<!--    android:scaleX="10": 控件在水平方向放大 10 倍-->
<!--    android:scaleY="5": 控件在垂直方向放大 5 倍-->
<!--    android:translationX="100dp": 控件在水平方向上平移 100dp-->
<!--    android:translationY="50dp": 控件在垂直方向上平移 50dp--><TextViewandroid:id="@+id/textView4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:alpha="0.5"android:rotation="120"android:rotationX="60"android:rotationY="30"android:scaleX="10"android:scaleY="5"android:translationX="100dp"android:translationY="50dp"android:text="@string/transforms" /></LinearLayout>

public class MainActivity extends AppCompatActivity {private EditText editText;private EditText editPassword;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main);// 初始化EditText组件editText = findViewById(R.id.editTextText);editPassword = findViewById(R.id.editTextTextPassword);// 修改字体颜色TextView viewById = findViewById(R.id.textView);viewById.setText(Html.fromHtml("替换为<font color='red'>HTML</font>文档", Html.FROM_HTML_MODE_COMPACT));// 设置按钮的监听事件findViewById(R.id.button2).setOnClickListener(v -> Toast.makeText(this, "暂时为开放注册功能", Toast.LENGTH_SHORT).show());findViewById(R.id.button).setOnClickListener(this::login);}private void login(View view) {String userName = editText.getText().toString();String password = editPassword.getText().toString();if(userName.isEmpty()){Toast.makeText(this, "请输入用户名", Toast.LENGTH_SHORT).show();return; // 添加return终止方法执行}else if(password.isEmpty()){Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();return; // 添加return终止方法执行}if (userName.equals("admin") && password.equals("1234")) {Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();}else {Toast.makeText(this, "用户名或密码错误", Toast.LENGTH_SHORT).show();}}}

结果展示

四、功能说明与总结

  1. 布局结构:通过线性布局(垂直方向)组织所有组件,保证UI整齐排列。
  2. TextView:实现了基础文本显示、HTML样式文本、链接自动识别、阴影效果、变形效果等功能。
  3. EditText:通过inputType区分普通文本和密码输入,hint属性提供输入提示。
  4. Button:通过权重分配按钮宽度,点击事件分别处理登录逻辑和注册提示。
  5. 交互逻辑:登录时校验输入合法性,通过Toast提示操作结果,提升用户体验。

通过以上步骤,可完成一个包含文本显示、输入框、按钮交互的基础Android页面。

http://www.dtcms.com/a/411343.html

相关文章:

  • Python设计选题-38
  • 研修|数据安全主题高研班走进美创数据安全能力中心
  • x86和ARM里的地址空间
  • 可植入代码网站开发免费网站统计代码
  • C4D口红外框建模:从零到一的造型与细节塑造指南
  • 2025年光子集成电路与智能光网络国际学术论坛(PICON2025)
  • ZStack Cloud v5.4.0 LTS 发布前瞻,开启智能云时代新篇章
  • 开发网站需要多久南宁房地产信息网
  • Redis Set集合操作全解析
  • 新东阳建设集团网站2018做网站还是app
  • 大模型之bert细节
  • 网站注册费计入什么科目人力资源公司注册条件
  • 智能制造浪潮下,AR技术重塑工业维护新范式
  • 站长网站工具广州游戏网站建设
  • 网站建设h5是指的那一块建站宝盒的设置
  • 深圳营销型网站制作建设北京网页设计与制作公司
  • 网站建设费用找团队做网站
  • Amazon Textract 文档信息提取实践:从概念到实战
  • 公司网站推广计划书出口外贸网站
  • 学习React-17-useMemo
  • 【开题答辩过程】以《宠物犬食品的数据分析与推荐系统》为例,不会开题答辩的可以进来看看
  • wordpress建电商网站wordpress 分页文章数
  • Vue3 新项目架构简单解析
  • 网站建设加网络营销上传的网站打不开怎么办
  • 南京网站建设公司哪家好seo专业课程
  • 网线制作工具seo报告
  • Python写入PostgreSQL表的三种实现方法
  • 聊聊UI自动化测试有哪些优势
  • 想自己做网站推广淘宝做动效代码的网站
  • 做一个能注册用户的网站空间设计师工资一般多少