Android控件系列之EditText使用方法

时间:2021-10-15 07:11:18

学习目的:

1、掌握在android中如何建立edittext
2、掌握edittext的常用属性
3、掌握edittext焦点的事件、按键的事件(监听器)

介绍:

edittext是接受用户输入信息的最重要控件。通过前面课程的学习,您可能会猜到可以利用edittext.gettext()获取它的文本,但真正的项目中,可能没那么简单,需要更多的限制,如文本长度限制,是否数字限制等等。

鉴于手机屏幕尺寸有限,您可能总想着如何节约控件。在每个用户需要填写内容的文本框的左边加上标题在pc上是一种优雅的方法,但在手机上就会显的浪费,因此本例我们将学习如何利用一个edittext达到所有的效果:

Android控件系列之EditText使用方法

 请注意第一个文本框,其他控件只是为了测试转移焦点后的效果,我们样例针对第一个文本进行限制,用户没有输入时,它显示“请输入您的名字”作为提示,为了区分这只是一个提示而不是真正的文本,我们使用灰色来以示区分,当用户输入自己的内容时,这个提示将会消失,而字体变为黑色,如下图:

Android控件系列之EditText使用方法

最后我们对edittext做了长度限制,这可以简单的在xml中将它的maxlength属性设定为一个值,但用户输入不了更多字符时,会产生歧义,因此需要告知用户无法继续输入的原因:

  Android控件系列之EditText使用方法

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,并介绍了常用的属性和事件,最后实现了一个用户体验良好的,并且非常通用的文本限制和提示功能。