Android控件系列之EditText使用方法
时间:2021-06-19 19:09:20
学习目的:
1、掌握在Android中如何建立EditText
2、掌握EditText的常用属性
3、掌握EditText焦点的事件、按键的事件( * )
介绍:
EditText是接受用户输入信息的最重要控件。通过前面课程的学习,您可能会猜到可以利用EditText.getText()获取它的文本,但真正的项目中,可能没那么简单,需要更多的限制,如文本长度限制,是否数字限制等等。
鉴于手机屏幕尺寸有限,您可能总想着如何节约控件。在每个用户需要填写内容的文本框的左边加上标题在PC上是一种优雅的方法,但在手机上就会显的浪费,因此本例我们将学习如何利用一个EditText达到所有的效果:
请注意第一个文本框,其他控件只是为了测试转移焦点后的效果,我们样例针对第一个文本进行限制,用户没有输入时,它显示“请输入您的名字”作为提示,为了区分这只是一个提示而不是真正的文本,我们使用灰色来以示区分,当用户输入自己的内容时,这个提示将会消失,而字体变为黑色,如下图:
最后我们对EditText做了长度限制,这可以简单的在XML中将它的maxLength属性设定为一个值,但用户输入不了更多字符时,会产生歧义,因此需要告知用户无法继续输入的原因:
XML布局代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#DDDDDD"
android:text="请输入您的名字"
android:id ="@+id/et"
android:maxLength = "10"
></EditText>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="点击转换焦点"
></Button>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="点击转换焦点"
android:id ="@+id/et2"
></EditText>
</LinearLayout>
后台代码如下:
//表示文本框是否为空
private Boolean isEmpty = true;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText et = (EditText)this.findViewById(R.id.et);
//监听控件的焦点改变事件
et.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
// TODO Auto-generated method stub
//获取触发事件的EditText
EditText clickEditText = (EditText)arg0;
//如果失去焦点
if(arg1 == false)
{
//获取当前文本
String text =clickEditText.getText().toString().trim();
//如果的确人为输入过内容
if(text.length()>0
&text.equals("请输入您的名字")== false)
{
isEmpty = false;
clickEditText.setTextColor(Color.BLACK);
clickEditText.setText(text);
}
else
{
clickEditText.setText("请输入您的名字");
clickEditText.setTextColor(Color.GRAY);
isEmpty = true;
}
}
//如果获得焦点
else
{
clickEditText.setTextColor(Color.BLACK);
//如果处于未编辑状态,则清空“请输入您的名字”这几个字
if(isEmpty == true)
{
clickEditText.setText("");
}
}
}
});
//监听控件有新字符输入
et.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
// TODO Auto-generated method stub
//获取触发事件的EditText
EditText clickEditText = (EditText)arg0;
//获取当前文本
String text =clickEditText.getText().toString().trim();
if(text.length()==10)
{
//提示用户
Toast toast = Toast.makeText(MyActivity.this, "最大长度为10个字符", Toast.LENGTH_SHORT);
toast.setGravity(0, 0, 0);
toast.show();
}
return false;
}
});
}
总结:
本文介绍了如何在Android中使用EditText,并介绍了常用的属性和事件,最后实现了一个用户体验良好的,并且非常通用的文本限制和提示功能。
标签:EditText
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java开发实现猜拳游戏
2023-09-27 03:21:46
Java核心编程之文件随机读写类RandomAccessFile详解
2023-11-28 17:40:05
Android实现关机重启的方法分享
2022-11-13 21:32:33
Android ListView的item背景色设置和item点击无响应的解决方法
2021-07-30 11:26:16
简单说明Java的Struts框架中merge标签的使用方法
2023-09-17 00:32:26
![](https://img.aspxhome.com/file/2023/5/87365_0s.jpg)
怎样使用PowerMockito 测试静态方法
2022-06-18 08:28:59
![](https://img.aspxhome.com/file/2023/7/86777_0s.jpg)
spring的jdbctemplate的crud的基类dao
2022-05-30 13:05:17
unity使用socket实现聊天室功能
2021-08-12 01:57:59
![](https://img.aspxhome.com/file/2023/5/108745_0s.jpg)
浅谈collection标签的oftype属性能否为java.util.Map
2023-03-19 23:16:15
![](https://img.aspxhome.com/file/2023/8/97818_0s.png)
c# 基于任务的异步编程模式(TAP)的异常处理
2023-08-03 15:44:06
简单解析java方法在调用在内存中的执行过程
2022-04-12 15:46:26
![](https://img.aspxhome.com/file/2023/6/59756_0s.png)
C#中SQL参数传入空值报错解决方案
2023-12-14 14:28:59
Java处理InterruptedException异常的理论与实践
2023-07-25 03:22:33
Java线程池Executor用法详解
2022-02-13 01:21:16
![](https://img.aspxhome.com/file/2023/2/62812_0s.jpg)
spring boot org.junit.jupiter.api不存在的解决
2023-07-11 18:34:16
![](https://img.aspxhome.com/file/2023/6/83596_0s.png)
SpringBoot加载外部依赖过程解析
2021-11-23 22:30:00
android利用消息机制获取网络图片
2023-07-24 09:46:57
![](https://img.aspxhome.com/file/2023/2/85962_0s.jpg)
Java数据结构之复杂度篇
2022-06-18 02:32:09
Android ListView用EditText实现搜索功能效果
2021-05-29 09:05:25
![](https://img.aspxhome.com/file/2023/3/96773_0s.gif)
Java面向接口编程之命令模式实例详解
2021-10-19 14:26:53
![](https://img.aspxhome.com/file/2023/4/132054_0s.png)