Android控件系列之EditText使用方法

学习目的:

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

时间: 2024-08-01 10:34:15

Android控件系列之EditText使用方法的相关文章

Android控件系列之Shape使用方法_Android

如果你对Android系统自带的UI控件感觉不够满意,可以尝试下自定义控件,我们就以Button为例,很早以前Android123就写到过Android Button按钮控件美化方法里面提到了xml的selector构造.当然除了使用drawable这样的图片外今天Android开发网谈下自定义图形shape的方法,对于Button控件Android上支持以下几种属性shape.gradient.stroke.corners等. 复制代码 代码如下: 我们就以目前系统的Button的select

Android控件系列之Shape使用方法

如果你对Android系统自带的UI控件感觉不够满意,可以尝试下自定义控件,我们就以Button为例,很早以前Android123就写到过Android Button按钮控件美化方法里面提到了xml的selector构造.当然除了使用drawable这样的图片外今天Android开发网谈下自定义图形shape的方法,对于Button控件Android上支持以下几种属性shape.gradient.stroke.corners等.复制代码 代码如下: 我们就以目前系统的Button的selecto

Android控件系列之ImageView使用方法_Android

学习目的: 1.掌握在Android中如何插入图片 图片的加入可以立刻让您的程序增色不少,我们样例选用一张Android机器人(picture.jpg),您可以使用自己的任何图片进行试验 一般建议您程序中的图片加入资源,而不是放在SD卡中用流的方式去读取,毕竟嵌入的资源比较安全,不容易被篡改. 1.导入图片到资源 将图片拖拽到项目res\drawable开头的3个文件夹下,他们分别代表了高.中.低分辨度的图片.Android读取图片时自动优化,选用合适的一个图片显示,比如高分辨率可以存放128*

Android控件系列之ImageView使用方法

学习目的: 1.掌握在Android中如何插入图片 图片的加入可以立刻让您的程序增色不少,我们样例选用一张Android机器人(picture.jpg),您可以使用自己的任何图片进行试验 一般建议您程序中的图片加入资源,而不是放在SD卡中用流的方式去读取,毕竟嵌入的资源比较安全,不容易被篡改. 1.导入图片到资源 将图片拖拽到项目res\drawable开头的3个文件夹下,他们分别代表了高.中.低分辨度的图片.Android读取图片时自动优化,选用合适的一个图片显示,比如高分辨率可以存放128*

Android控件系列之RadioButton与RadioGroup使用方法_Android

学习目的: 1.掌握在Android中如何建立RadioGroup和RadioButton 2.掌握RadioGroup的常用属性 3.理解RadioButton和CheckBox的区别 4.掌握RadioGroup选中状态变换的事件(监听器) RadioButton和CheckBox的区别: 1.单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后,通过点击可以变为未选中 2.一组RadioButton,只能同时选中一个 一组CheckBox,能同时选中多个

Android控件系列之CheckBox使用介绍_Android

学习目的: 1.掌握在Android中如何建立CheckBox 2.掌握CheckBox的常用属性 3.掌握CheckBox选中状态变换的事件(监听器) CheckBox简介: CheckBox和Button一样,也是一种古老的控件,它的优点在于,不用用户去填写具体的信息,只需轻轻点击,缺点在于只有"是"和"否"两种情况,但我们往往利用它的这个特性,来获取用户的一些信息. 如一个身份表单中,常常让用户填写"是否已经结婚",显然让用户去填写&quo

Android控件系列之Button以及Android监听器使用介绍_Android

学习目的: 1.掌握在Android中如何建立Button 2.掌握Button的常用属性 3.掌握Button按钮的点击事件(监听器) Button是各种UI中最常用的控件之一,它同样也是Android开发中最受欢迎的控件之一,用户可以通过触摸它来触发一系列事件,要知道一个没有点击事件的Button是没有任何意义的,因为使用者的固定思维是见到它就想去点! 先看下Android中普通Button的样子: 以及点中Button后的样子: 我在Android控件系列之XML静态资源中已经强调了布局和

Android控件系列之CheckBox使用介绍

学习目的: 1.掌握在Android中如何建立CheckBox 2.掌握CheckBox的常用属性 3.掌握CheckBox选中状态变换的事件(监听器) CheckBox简介: CheckBox和Button一样,也是一种古老的控件,它的优点在于,不用用户去填写具体的信息,只需轻轻点击,缺点在于只有"是"和"否"两种情况,但我们往往利用它的这个特性,来获取用户的一些信息. 如一个身份表单中,常常让用户填写"是否已经结婚",显然让用户去填写&quo

Android控件系列之Button以及Android监听器使用介绍

学习目的: 1.掌握在Android中如何建立Button 2.掌握Button的常用属性 3.掌握Button按钮的点击事件(监听器) Button是各种UI中最常用的控件之一,它同样也是Android开发中最受欢迎的控件之一,用户可以通过触摸它来触发一系列事件,要知道一个没有点击事件的Button是没有任何意义的,因为使用者的固定思维是见到它就想去点! 先看下Android中普通Button的样子: 以及点中Button后的样子: 我在Android控件系列之XML静态资源中已经强调了布局和