`
baobaoupup
  • 浏览: 470515 次
文章分类
社区版块
存档分类
最新评论

Android软件开发之EditText 详解

 
阅读更多
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://xys289187120.blog.51cto.com/3361352/657189

EditText在API中的结构

java.lang.Object
 android.view.View
  android.widget.TextView
   android.widget.EditText
已知直接子类:
   AutoCompleteTextView, ExtractEditText
已知间接子类:
   MultiAutoCompleteTextView

EditText是TextView的直接子类 所以EditText会继承父类TextView的一些方法。下面我用自己写的一个Demo 和大家详细的说明一下EditView的使用方法。


1.简单的EditText输入框

非常简单,在layout布局中配置一下EditText 在配置一个Button 在代码中监听Button 的事件 获取当前EditView中输入的内容并且显示出来。


  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/textviewll"
  4. android:orientation="vertical"android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <EditText
  7. android:id="@+id/sample_edit_text0"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="简单的EditText输入框"/>
  11. <Button
  12. android:id="@+id/sample_button0"
  13. android:layout_width="fill_parent"android:layout_height="wrap_content"
  14. android:text="确定"/>
  15. </LinearLayout>
  1. publicclassSampleActivityextendsActivity{
  2. @Override
  3. protectedvoidonCreate(BundlesavedInstanceState){
  4. setContentView(R.layout.sample);
  5. finalEditTexteditText0=(EditText)findViewById(R.id.sample_edit_text0);
  6. Buttonbutton0=(Button)findViewById(R.id.sample_button0);
  7. button0.setOnClickListener(newOnClickListener(){
  8. @Override
  9. publicvoidonClick(Viewarg0){
  10. Stringstr=editText0.getText().toString();
  11. Toast.makeText(SampleActivity.this,str,Toast.LENGTH_LONG).show();
  12. }
  13. });
  14. super.onCreate(savedInstanceState);
  15. }
  16. }
2.限制EditText输入框的内容


在layout中配置信息

android:digits="1234567890.+-*/%\n()"
限制输入框中只能输入自己定义的这些字符串 如果输入其它将不予以显示
android:phoneNumber="true"
限制输入框中只能输入手机号码
android:password="true"
限制输入框中输入的任何内容将以"*"符号来显示
android:hint="默认文字"
输入内容前默认显示在输入框中的文字

android:textColorHint="#FF0000"
设置文字内容颜色
android:enabled="false"
设置输入框不能被编辑

3.编辑框中显示图片

上一篇讲TextView中就讲过在TextView中添加图片的方法,因为EditText是TextView的子类, 所以当然也可以添加图片了,只是一旦在EditText中添加图片以后是不能删除的,如图所示我可以编辑图片旁边的内容,写入文字。



  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/textviewll"
  4. android:orientation="vertical"
  5. android:layout_width="fill_parent"
  6. android:layout_height="fill_parent"
  7. >
  8. <EditText
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:text="在图片下方"
  12. android:textColor="#FF0000"
  13. android:drawableBottom="@drawable/jay"
  14. android:layout_alignParentTop="true"
  15. android:layout_centerHorizontal="true"
  16. >
  17. </EditText>
  18. <EditText
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:text="在图片上方"
  22. android:textColor="#FF0000"
  23. android:drawableTop="@drawable/jay"
  24. android:layout_alignParentBottom="true"
  25. android:layout_centerHorizontal="true"
  26. >
  27. </EditText>
  28. <EditText
  29. android:layout_width="wrap_content"
  30. android:layout_height="wrap_content"
  31. android:text="在图片左边"
  32. android:textColor="#FF0000"
  33. android:drawableLeft="@drawable/jay"
  34. android:layout_alignParentLeft="true"
  35. android:layout_centerVertical="true"
  36. >
  37. </EditText>
  38. <EditText
  39. android:layout_width="wrap_content"
  40. android:layout_height="wrap_content"
  41. android:text="在图片右边"
  42. android:textColor="#FF0000"
  43. android:drawableRight="@drawable/jay"
  44. android:layout_alignParentRight="true"
  45. android:layout_centerVertical="true"
  46. >
  47. </EditText>
  48. </RelativeLayout>

4.设置软键盘的Enter键

如图所示我们可以修改软键盘的Enter按钮的样式,可以在代码中监听 按钮点击事件。

  1. packagecn.m15.xys;
  2. importandroid.app.Activity;
  3. importandroid.os.Bundle;
  4. importandroid.view.KeyEvent;
  5. importandroid.view.inputmethod.EditorInfo;
  6. importandroid.widget.EditText;
  7. importandroid.widget.TextView;
  8. importandroid.widget.Toast;
  9. importandroid.widget.TextView.OnEditorActionListener;
  10. publicclassKeyBoardActivityextendsActivity{
  11. @Override
  12. protectedvoidonCreate(BundlesavedInstanceState){
  13. setContentView(R.layout.keyboard);
  14. EditTexteditText0=(EditText)findViewById(R.id.txtTest0);
  15. editText0.setOnEditorActionListener(newOnEditorActionListener(){
  16. @Override
  17. publicbooleanonEditorAction(TextViewarg0,intarg1,KeyEventarg2){
  18. if(arg1==EditorInfo.IME_ACTION_GO){
  19. Toast.makeText(KeyBoardActivity.this,"你点了软键盘'去往'按钮",
  20. Toast.LENGTH_SHORT).show();
  21. }
  22. returnfalse;
  23. }
  24. });
  25. EditTexteditText1=(EditText)findViewById(R.id.txtTest1);
  26. editText1.setOnEditorActionListener(newOnEditorActionListener(){
  27. @Override
  28. publicbooleanonEditorAction(TextViewarg0,intarg1,KeyEventarg2){
  29. if(arg1==EditorInfo.IME_ACTION_SEARCH){
  30. Toast.makeText(KeyBoardActivity.this,"你点了软键盘'搜索'按钮",
  31. Toast.LENGTH_SHORT).show();
  32. }
  33. returnfalse;
  34. }
  35. });
  36. EditTexteditText2=(EditText)findViewById(R.id.txtTest2);
  37. editText2.setOnEditorActionListener(newOnEditorActionListener(){
  38. @Override
  39. publicbooleanonEditorAction(TextViewarg0,intarg1,KeyEventarg2){
  40. if(arg1==EditorInfo.IME_ACTION_SEND){
  41. Toast.makeText(KeyBoardActivity.this,"你点了软键盘'发送'按钮",
  42. Toast.LENGTH_SHORT).show();
  43. }
  44. returnfalse;
  45. }
  46. });
  47. EditTexteditText3=(EditText)findViewById(R.id.txtTest3);
  48. editText3.setOnEditorActionListener(newOnEditorActionListener(){
  49. @Override
  50. publicbooleanonEditorAction(TextViewarg0,intarg1,KeyEventarg2){
  51. if(arg1==EditorInfo.IME_ACTION_NEXT){
  52. Toast.makeText(KeyBoardActivity.this,"你点了软键盘'下一个'按钮",
  53. Toast.LENGTH_SHORT).show();
  54. }
  55. returnfalse;
  56. }
  57. });
  58. EditTexteditText4=(EditText)findViewById(R.id.txtTest4);
  59. editText4.setOnEditorActionListener(newOnEditorActionListener(){
  60. @Override
  61. publicbooleanonEditorAction(TextViewarg0,intarg1,KeyEventarg2){
  62. if(arg1==EditorInfo.IME_ACTION_DONE){
  63. Toast.makeText(KeyBoardActivity.this,"你点了软键盘'完成'按钮",
  64. Toast.LENGTH_SHORT).show();
  65. }
  66. returnfalse;
  67. }
  68. });
  69. EditTexteditText5=(EditText)findViewById(R.id.txtTest5);
  70. editText5.setOnEditorActionListener(newOnEditorActionListener(){
  71. @Override
  72. publicbooleanonEditorAction(TextViewarg0,intarg1,KeyEventarg2){
  73. if(arg1==EditorInfo.IME_ACTION_UNSPECIFIED){
  74. Toast.makeText(KeyBoardActivity.this,"你点了软键盘'未指定'按钮",
  75. Toast.LENGTH_SHORT).show();
  76. }
  77. returnfalse;
  78. }
  79. });
  80. super.onCreate(savedInstanceState);
  81. }
  82. }


监听软键盘的点击事件

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/textviewll"
  4. android:orientation="vertical"android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <EditTextandroid:id="@+id/txtTest0"
  7. android:imeOptions="actionGo"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:hint="特殊按钮-去往"
  11. ></EditText>
  12. <EditTextandroid:id="@+id/txtTest1"
  13. android:imeOptions="actionSearch"
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:hint="特殊按钮-搜索"
  17. ></EditText>
  18. <EditTextandroid:id="@+id/txtTest2"
  19. android:imeOptions="actionSend"
  20. android:layout_width="fill_parent"
  21. android:layout_height="wrap_content"
  22. android:hint="特殊按钮-发送"
  23. ></EditText>
  24. <EditTextandroid:id="@+id/txtTest3"
  25. android:imeOptions="actionNext"
  26. android:layout_width="fill_parent"
  27. android:layout_height="wrap_content"
  28. android:hint="特殊按钮-下一个"
  29. ></EditText>
  30. <EditTextandroid:id="@+id/txtTest4"
  31. android:imeOptions="actionDone"
  32. android:layout_width="fill_parent"
  33. android:layout_height="wrap_content"
  34. android:hint="特殊按钮-完成"
  35. ></EditText>
  36. <EditTextandroid:id="@+id/txtTest5"
  37. android:imeOptions="actionUnspecified"
  38. android:layout_width="fill_parent"
  39. android:layout_height="wrap_content"
  40. android:hint="特殊按钮-未指定"
  41. ></EditText>
  42. </LinearLayout>

5.监听软键盘的按键事件

做项目的时候 有时候须要在用户输入内容时做检测,比如如果用户输入不合法的内容不予以显示在EditText中, 这时候我就要用到addTextChangedListener 用它来监听用户输入状态。可以在监听中改变用户输入的内容或者提示用户输入内容不合法等等。 如图所示我的每次输入操作都可以被正常的监听出来,用户输入内容的正常流程 beforeTextChanged() -》onTextChanged() -》afterTextChanged()然后是通知屏幕绘制 显示在屏幕上 所以我们可以在这三个方法中来修改用户输入内容 或者截取用户输入的内容。

  1. packagecn.m15.xys;
  2. importandroid.app.Activity;
  3. importandroid.os.Bundle;
  4. importandroid.text.Editable;
  5. importandroid.text.TextWatcher;
  6. importandroid.widget.EditText;
  7. importandroid.widget.TextView;
  8. publicclassMonitorKeyActivityextendsActivity{
  9. @Override
  10. protectedvoidonCreate(BundlesavedInstanceState){
  11. setContentView(R.layout.monitorkey);
  12. EditTexteditText=(EditText)findViewById(R.id.monitor_edit_text0);
  13. finalTextViewtextView0=(TextView)findViewById(R.id.monitor_text0);
  14. finalTextViewtextView1=(TextView)findViewById(R.id.monitor_text1);
  15. finalTextViewtextView2=(TextView)findViewById(R.id.monitor_text2);
  16. editText.addTextChangedListener(newTextWatcher(){
  17. @Override
  18. publicvoidonTextChanged(CharSequencetext,intstart,intbefore,intcount){
  19. //text输入框中改变后的字符串信息
  20. //start输入框中改变后的字符串的起始位置
  21. //before输入框中改变前的字符串的位置默认为0
  22. //count输入框中改变后的一共输入字符串的数量
  23. textView1.setText("输入后字符串["+text.toString()+"]起始光标["+start+"]输入数量["+count+"]");
  24. }
  25. @Override
  26. publicvoidbeforeTextChanged(CharSequencetext,intstart,intcount,intafter){
  27. //text输入框中改变前的字符串信息
  28. //start输入框中改变前的字符串的起始位置
  29. //count输入框中改变前后的字符串改变数量一般为0
  30. //after输入框中改变后的字符串与起始位置的偏移量
  31. System.out.println(text.toString());
  32. textView0.setText("输入前字符串["+text.toString()+"]起始光标["+start+"]结束偏移量["+after+"]");
  33. }
  34. @Override
  35. publicvoidafterTextChanged(Editableedit){
  36. //edit输入结束呈现在输入框中的信息
  37. textView2.setText("输入结束后的内容为["+edit.toString()+"]即将显示在屏幕上");
  38. }
  39. });
  40. super.onCreate(savedInstanceState);
  41. }
  42. }
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/textviewll"
  4. android:orientation="vertical"android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <TextView
  7. android:id="@+id/monitor_text0"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:textSize="18dip"
  11. android:textColor="#FF0000"/>
  12. <TextView
  13. android:id="@+id/monitor_text1"
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:textSize="18dip"
  17. android:textColor="#FF0000"
  18. />
  19. <TextView
  20. android:id="@+id/monitor_text2"
  21. android:layout_width="fill_parent"
  22. android:layout_height="wrap_content"
  23. android:textSize="18dip"
  24. android:textColor="#FF0000"
  25. />
  26. <EditText
  27. android:id="@+id/monitor_edit_text0"
  28. android:layout_width="fill_parent"
  29. android:layout_height="wrap_content"
  30. android:hint="监听软键盘按键的输入状态"/>
  31. </LinearLayout>

分享到:
评论

相关推荐

    Android软件开发之EditText 详解源码

    雨松MOMO带你做软件 Android软件开发之EditText 详解源码 欢迎大家下载阅读。

    [14本经典Android开发教程]-2-Android开发手册—API函数详解

    [14本经典Android开发教程] 2 Android开发手册 API函数详解 一 TextView的API 1 1 结构 java lang Object android view View android widget TextView 直接子类: Button CheckedTextView Chronometer DigitalClock...

    Android核心技术与实例详解 PDF扫描版

    Android核心技术与实例详解 图书简介: 本书以Android应用程序的开发为主题 并结合真实的案例向读者详细介绍了Android的基本组件的使用及应用程序开发的整个流程 全书分为三篇共18章 第一篇以简单易懂的实例为依托 ...

    《Android应用开发揭秘》源码

    精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会游戏软件分会(CGIA)认证及国际游戏开发教育联合会国际认证。曾经领导和参与...

    《Android应用开发揭秘》附带光盘代码.

    《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言  第一部分 准备篇  第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 ...

    Android应用开发揭秘pdf高清版

    《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏...

    Android编程之ListView和EditText发布帖子隐藏软键盘功能详解

    本文实例讲述了Android编程之ListView和EditText发布帖子隐藏软键盘功能。分享给大家供大家参考,具体如下: 在Android开发中,手动调用软件盘的隐藏和显示有时候也是非常常见的需求。 EditText控件实现了点击打开软...

    Android应用开发揭秘

    精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会游戏软件分会(CGIA)认证及国际游戏开发教育联合会国际认证。曾经领导和参与...

    android开发入门与实战(下)

    2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、AndroidSDK软件安装 2.2.2 SDK的家在哪里——设定AndroidSDKHome 2.2.3 真的准备好了吗——开发环境验证 2.2.4 创建...

    android开发入门与实战(上)

    2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、AndroidSDK软件安装 2.2.2 SDK的家在哪里——设定AndroidSDKHome 2.2.3 真的准备好了吗——开发环境验证 2.2.4 创建...

    Google Android SDK开发范例大全(第3版) 4/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 3/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 5/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    《Google Android开发入门与实战》.pdf

    2.1.2 android软件开发包 7 .2.1.3 其他注意事项 8 2.2 windows开发环境搭建 8 2.2.1 jdk、eclipse、android sdk软件安装 8 2.2.2 sdk的家在哪里——设定android sdk home 14 2.2.3 真的准备好了吗...

    Google Android SDK开发范例大全(第3版) 1/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google.Android开发入门与实战

    本书系统讲解了Android软件开发的基础知识,图文并茂地帮助读者学习和掌握SDK、开发流程以及常用的API等。书中以讲述实战实例为导向,用一个个典型应用生动地引领读者进行项目开发实践。作为一本既及时、又翔实、...

    Google Android开发入门与实战的代码

    2.1.2 Android软件开发包 7 .2.1.3 其他注意事项 8 2.2 Windows开发环境搭建 8 2.2.1 JDK、Eclipse、Android SDK软件安装 8 2.2.2 SDK的家在哪里——设定Android SDK Home 14 2.2.3 真的准备好了吗...

Global site tag (gtag.js) - Google Analytics