14. 【Android教程】文本输入框 EditText

在上一节我们讲到了 TextView,它用来显示一段文本。这一节可以算作成是 TextView 的延续,因为从功能上 EditText 在 TextView 的基础之上多了一个输入的功能;从代码上 EditText 是继承自 TextView 的子类,所以我们可以大胆的理解为, EditText 是一种带有输入功能的高级 TextView。

1. EditText 的特性

在学习过 TextView 之后,EditText 就非常好理解了,它提供了一种文本输入的方式,内部可以支持单行或者多行输入,并且提供一个浮标,让用户选择输入的位置,通常情况下点击 EditText 会自动展示出手机的输入键盘。回想一下,我们前面在什么场景下有用到过?

2. EditText 的属性

2.1 android:inputType

设置 EditText 的输入类型,这样用户就只能按照你预设的规范进行输入。
作为用户有没有发现在登录的时候,在密码的输入框输入任何字符都会显示成“*”或者“·”,然后输入身份证的时候只能是数字加上“X”。这个功能就需要用到inputType属性了,系统支持的可配置值如下:

  • text
    输入文本类型
  • textAutoComplete
    文本自动补全,类似在百度搜索框中搜索的时候,只需要输入一两个字会系统自动帮你预测并补全剩余字符。
  • textAutoCorrect
    让EditText对用户的输入进行自动矫正
  • textPassword
    输入为密码类型,会在输入框中显示“*”或者“·”
  • textUri
    uri类型的文本
  • textEmailAddress
    email类型的文本
  • phone
    电话号码类型,此模式下只支持输入数字
  • datetime
    日期类型

以上是常用类型,除此之外还有很多很多,具体的属性可以查阅官网:inputType 类型列表
我们也可以同时设置多个属性,只需要在多个属性中间用“|”分隔,比如:

android:inputType="textCapSentences|textAutoCorrect"

2.2 android:imeOptions

这是一个非常好用的属性,大家在用 Andorid 系统的时候应该会发现,在大多数输入法的右下角,会留一个按键。当你在聊天的时候,右下角按键是“发送”;当你在登录的时候,它会是“登录”;当你在填写表格的时候,会是“下一页”;当你… …如何让输入法如此“智能”的跟随场景变化,就需要用到 imeOptions 属性了。

2.3 android:minLines

设置最小行数。通过设置 minLines 为 n,可以让 EditText 的高度是 2 倍的行高,即使你没有输入任何字符,EditText 也会是2倍行高。

2.4 android:maxLines

设置 EditText 最大可容纳的行数。如果设为 n,那么 EditText在输入字符超过 n 行之后高度就不会在自动扩张,而改为采用一个滚动条的形式,通过拖动滚动条来查看前后的内容,通常用这个属性还限制 EditText 的最大高度。

2.5 android:hint

设置 EditText 提示符。如果 EditText 没有输入字符,会默认显示hint设置的字符,一旦有输入则会清空 hint,通常用来提示用户当前 EditText 应该输入什么内容。

2.6 android:maxLength

设置最大字符容量。这个比较好理解,就是限制用户可以输入多少个字符。

3. 通过 xml 定义一个 EditText

<EditText xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/input_password"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入密码"android:imeOptions="actionDone"android:inputType="textPassword"android:maxLines="5"android:textSize="20sp" />

代码比较简单,主要实现了以下几个属性:

  • android:hint="请输入密码"
    用来提示用户,本输入框的功能是输入密码,当你点击EditText往里面输入字符之后,提示就会消失。
  • android:inputType="textPassword"
    设置当前输入的类为密码,那么当用户输入文本后,系统会用“*”或者“·”替代。
  • android:maxLines="3"
    设置当前的输入框最多使能容纳3行内人,如果多余 3 行,则会采用滚动条的形式上下滑动。
    效果如下:

4. 获取用户的输入信息

TextView 的功能只是作为信息输出展示给用户,而 EditText 除了可以展示信息之外,还需要从用户那里得到输入的内容,我们可以通过getText().toString()获取到 EditText 的输入信息。
修改一下布局文件,添加一个 button 来触发获取的时机:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="20dp"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:text="确定" /><EditTextandroid:id="@+id/input_password"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginRight="10dp"android:layout_toLeftOf="@id/button"android:hint="请输入密码"android:imeOptions="actionDone"android:inputType="textPassword"android:maxLines="5"android:textSize="20sp" /></RelativeLayout>

我们在第一个示例代码基础之上,加了一个 Button,并放在了一个 RelativeLayout 中(大家可以思考一下这里为什么要用 RelativeLayout,如果用 LinearLayout 能实现吗?),我们希望用 Button 作为获取 EditText 内容的触发事件,当点击 Button 的时候,我们获取用户在 EditText 中输入的内容,并打印到屏幕上验证结果。

相关 Java 代码如下:

final EditText editText = findViewById(R.id.input_password);Button button = findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, editText.getText(), Toast.LENGTH_SHORT).show();}});

首先我们根据 ID 拿到 EditText 和 Button 的实例,接着对 Button 设置一个监听器(关于 Button 监听器的使用,如果不清楚可以参考后续 Button 章节,不是本节重点),在监听器中我们获取 EditText 的内容,并通过 Toast 打印到屏幕,效果如下:

扩展:其实getText()不是 EditText 特有的,TextView 也可以通过getText()拿到显示的内容,只不过 TextView 的内容是由我们设置上去的,所以需要去获取的场景比较少,用的也相对少。

5. 小结

EditText 是继承自 TextView 的,所以基本上 TextView 所有的属性及用法都可以适用于 EditText。本节介绍了 EditText 的一些最常见的用法,而 EditText 和 TextView 的高级用法和属性非常多,也都大同小异,掌握了本节的内容,未来如果需要用到高级用法相信你也能很快的举一反三。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/802181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

下载python电子书

下面展示一些 内联代码片。 import requests from lxml import etree from urllib import parse from pprint import pprint from tqdm import tqdm class PythonBook: def init(self): self.url“https://m.jb51.net/books/list476_1.html” self.url_page“https://m.jb51.n…

数字乡村发展新模式:科技创新引领农业现代化与乡村振兴协同发展

随着信息技术的飞速发展&#xff0c;数字乡村已成为新时代农业现代化与乡村振兴协同发展的新模式。科技创新作为推动这一模式的核心动力&#xff0c;正引领着乡村产业结构的优化升级&#xff0c;促进农村经济的全面振兴&#xff0c;让农民在现代化的进程中共享发展成果。 一、科…

transformer上手(1) —— transformer介绍

1 起源与发展 2017 年 Google 在《Attention Is All You Need》中提出了 Transformer 结构用于序列标注&#xff0c;在翻译任务上超过了之前最优秀的循环神经网络模型&#xff1b;与此同时&#xff0c;Fast AI 在《Universal Language Model Fine-tuning for Text Classificat…

STM32存储左右互搏 SDIO总线读写SD/MicroSD/TF卡

STM32存储左右互搏 SDIO总线读写SD/MicroSD/TF卡 SD/MicroSD/TF卡是基于FLASH的一种常见非易失存储单元&#xff0c;由接口协议电路和FLASH构成。市面上由不同尺寸和不同容量的卡&#xff0c;手机领域用的TF卡实际就是MicroSD卡&#xff0c;尺寸比SD卡小&#xff0c;而电路和协…

基于Java SpringBoot+Vue的体育用品库存管理系统

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

力扣739. 每日温度

Problem: 739. 每日温度 文章目录 题目描述思路复杂度Code 题目描述 思路 若本题目使用暴力法则会超时&#xff0c;故而使用单调栈解决&#xff1a; 1.创建结果数组res&#xff0c;和单调栈stack&#xff1b; 2.循环遍历数组temperatures&#xff1a; 2.1.若当stack不为空同时…

【C语言】扫雷【附源码】

一、扫雷游戏规则 尽快找到雷区中的所有不是地雷的格子,而不许踩到地雷。点开的数字是几&#xff0c;则说明该数字旁边的8个位置中有几个雷&#xff0c;如果挖开的是地雷&#xff0c;则会输掉游戏。 二、代码思路&#xff1a; 宏定义&#xff1a; Row 和 Col 定义了棋盘的行数和…

计算机研究生规划

一、计算机研究生技术栈 两条腿走路: 左侧工程实践能力&#xff1a;要掌握python编程语言&#xff0c;它和机器学习、神经网络&#xff08;这两门几乎是必须掌握的技能&#xff09;的学习有很大关系 右侧学术创新能力 二、编程语言能力提升 左边基础&#xff0c;右边教你写…

在ubuntu系统上安装ffmpeg支持rrweb使用rrvideo对视频文件转mp4格式遇到的一些问题及解决办法

在ubuntu系统上安装ffmpeg支持rrweb使用rrvideo对视频文件转mp4格式遇到的一些问题及解决办法 1,ubuntu系统上安装ffmpeg4.4.1稳定版本1,ubuntu系统上安装ffmpeg4.4.1稳定版本 按照ChatGPT3.5来 sudo apt updatesudo apt install build-essential git sudo apt-get instal…

上传应用程序到苹果应用商店的工具和要点

引言 在今天的移动应用市场中&#xff0c;将应用程序上传到苹果应用商店&#xff08;App Store&#xff09;是许多开发者的首要任务之一。然而&#xff0c;不同操作系统下的开发者可能需要使用不同的工具和遵循不同的要求来完成这一任务。本文将介绍在 macOS、Windows 和 Linu…

蓝桥杯算法题:练功

【问题描述】 小明每天都要练功&#xff0c;练功中的重要一项是梅花桩。 小明练功的梅花桩排列成 n 行 m 列&#xff0c;相邻两行的距离为 1&#xff0c;相邻两列的距离也为 1。 小明站在第 1 行第 1 列上&#xff0c;他要走到第 n 行第 m 列上。小明已经练了一段时间&#xff…

OpenHarmony实战:瑞芯微RK3566移植案例(下)

OpenHarmony实战&#xff1a;瑞芯微RK3566移植案例&#xff08;下&#xff09; OpenHarmony实战&#xff1a;瑞芯微RK3566移植案例&#xff08;中&#xff09; WIFI 整改思路及实现流程 整改思路 接下来熟悉HCS文件的格式以及"HDF WIFI”核心驱动框架的代码启动初始化…

大话设计模式——11.桥接模式(Bridge Pattern)

简介 将抽象部分与它的实现部分分离&#xff0c;使它们可以独立变化。 UML图&#xff1a; 应用场景&#xff1a; 系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性不想使用继承导致系统类的个数急剧增加某个类存在多个变化维度使用继承方式容易出现类的膨胀 示例…

Windows编译运行TensorRT-YOLOv9 (C++)

Windows编译运行yolov9-bytetrack-tensorrt&#xff08;C&#xff09; 1 基础环境2 编译yolov9-bytetrack-tensorrt&#xff08;1&#xff09;下载yolov9-bytetrack-tensorrt源码&#xff08;2&#xff09;修改CMakeLists.txt&#xff08;3&#xff09;CMake编译 3 yolov9模型转…

python+appium调@pytest.mark.parametrize返回missing 1 required positional argument:

出错描述&#xff1a; 1、在做pythonappium自动化测试时&#xff0c;使用装饰器pytest.mark.parametrize&#xff08;“参数”&#xff0c;[值1&#xff0c;值2&#xff0c;值3]&#xff09;&#xff0c;测试脚本执行返回test_xx() missing 1 required positional argument:“…

【数据结构与算法】:归并排序和计数排序

1. 归并排序 归并排序是一种效率仅次于快速排序的排序算法。它有非递归和递归两种实现方式(本文只讲述递归实现&#xff0c;非递归实现以后有专门的文章)。 其实&#xff0c;归并排序也叫外排序。它不仅可以对内存中的数据进行排序&#xff0c;还能对文件里的数据排序。 比如&…

革新铁路安全管理,RFID电子锁技术提升效率与防护

一、铁路行业的现状与挑战 铁路行业作为全球重要的交通基础设施&#xff0c;承担着庞大的客运和货运任务。随着铁路网络的不断扩张&#xff0c;如何确保铁路资产的安全、提高运营效率、降低维护成本&#xff0c;成为行业面临的主要挑战。传统的铁路资产管理依赖于人工巡检和记…

colmap安装问题汇总

问题目录 问题0、没有root权限怎么安装colmap&#xff1f; 问题1、ERROR: SiftGPU not fully supported/Could not connect to any X display 问题2、Cannot specify include directories for imported target "freeimage::FreeImage". 问题3、could not find ZL4 问…

【GEE】遥感数据趋势分析Sen+mk

Map.centerObject(table);// 定义时间范围 var stary 2001, endy 2023; //NDVI图像集合 var NDVICL ee.ImageCollection(ee.List.sequence(stary, endy).map(function(year) {// 定义每年的开始和结束日期var startd ee.Date.fromYMD(year, 1, 1);var endd ee.Date.fromYM…

精益管理培训在哪些行业比较适用?

在当今瞬息万变的市场环境中&#xff0c;企业竞争日趋激烈&#xff0c;如何提升内部管理水平、降低成本、提高效率&#xff0c;成为企业持续发展的关键。精益管理作为一种先进的管理理念和方法&#xff0c;正逐渐被越来越多的行业所采纳和应用。本文&#xff08;深圳天行健精益…