Android控件系列之EditText

学习目的:

1、掌握在Android中如何建立EditText

2、掌握EditText的常用属性

3、掌握EditText焦点的事件、按键的事件(监听器)

介绍:

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

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

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

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

  

XML布局代码如下:

复制代码
   
   
1 <? xml version="1.0" encoding="utf-8" ?> 2   < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" 3 android:orientation ="vertical" 4 android:layout_width ="fill_parent" 5 android:layout_height ="fill_parent" 6 > 7   < EditText 8 android:layout_width ="fill_parent" 9 android:layout_height ="wrap_content" 10 android:textColor ="#DDDDDD" 11 android:text ="请输入您的名字" 12 android:id ="@+id/et" 13 android:maxLength = "10" 14 15 ></ EditText > 16 < Button 17 android:layout_width ="fill_parent" 18 android:layout_height ="wrap_content" 19 android:text ="点击转换焦点" 20 ></ Button > 21 < EditText 22 android:layout_width ="fill_parent" 23 android:layout_height ="wrap_content" 24 25 android:text ="点击转换焦点" 26 android:id ="@+id/et2" 27 ></ EditText > 28 </ LinearLayout >
复制代码

后台代码如下:

复制代码
   
   
1 // 表示文本框是否为空 2 private Boolean isEmpty = true ; 3 4 /** Called when the activity is first created. */ 5 @Override 6 public void onCreate(Bundle savedInstanceState) { 7 super .onCreate(savedInstanceState); 8 setContentView(R.layout.main); 9 10 EditText et = (EditText) this .findViewById(R.id.et); 11 // 监听控件的焦点改变事件 12 et.setOnFocusChangeListener( new OnFocusChangeListener() { 13 14 @Override 15 public void onFocusChange(View arg0, boolean arg1) { 16 // TODO Auto-generated method stub 17 // 获取触发事件的EditText 18 EditText clickEditText = (EditText)arg0; 19 20 // 如果失去焦点 21 if (arg1 == false ) 22 { 23 // 获取当前文本 24 String text = clickEditText.getText().toString().trim(); 25 // 如果的确人为输入过内容 26 if (text.length() > 0 27 & text.equals( " 请输入您的名字 " ) == false ) 28 { 29 isEmpty = false ; 30 clickEditText.setTextColor(Color.BLACK); 31 clickEditText.setText(text); 32 } 33 else 34 { 35 clickEditText.setText( " 请输入您的名字 " ); 36 clickEditText.setTextColor(Color.GRAY); 37 isEmpty = true ; 38 } 39 } 40 // 如果获得焦点 41 else 42 { 43 clickEditText.setTextColor(Color.BLACK); 44 // 如果处于未编辑状态,则清空“请输入您的名字”这几个字 45 if (isEmpty == true ) 46 { 47 clickEditText.setText( "" ); 48 } 49 } 50 } 51 }); 52 53 // 监听控件有新字符输入 54 et.setOnKeyListener( new OnKeyListener() { 55 56 @Override 57 public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 58 // TODO Auto-generated method stub 59 // 获取触发事件的EditText 60 EditText clickEditText = (EditText)arg0; 61 // 获取当前文本 62 String text = clickEditText.getText().toString().trim(); 63 64 65 if (text.length() == 10 ) 66 { 67 // 提示用户 68 Toast toast = Toast.makeText(MyActivity. this , " 最大长度为10个字符 " , Toast.LENGTH_SHORT); 69 toast.setGravity( 0 , 0 , 0 ); 70 toast.show(); 71 } 72 return false ; 73 } 74 }); 75 76 }
复制代码

总结:

本文介绍了如何在Android中使用EditText,并介绍了常用的属性和事件,最后实现了一个用户体验良好的,并且非常通用的文本限制和提示功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值