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中输入的内容并且显示出来。
- <?xmlversion="1.0"encoding="utf-8"?>
-
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
-
android:id="@+id/textviewll"
-
android:orientation="vertical"android:layout_width="fill_parent"
-
android:layout_height="fill_parent">
-
<EditText
-
android:id="@+id/sample_edit_text0"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:text="简单的EditText输入框"/>
-
<Button
-
android:id="@+id/sample_button0"
-
android:layout_width="fill_parent"android:layout_height="wrap_content"
-
android:text="确定"/>
-
</LinearLayout>
- publicclassSampleActivityextendsActivity{
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- setContentView(R.layout.sample);
-
-
finalEditTexteditText0=(EditText)findViewById(R.id.sample_edit_text0);
-
Buttonbutton0=(Button)findViewById(R.id.sample_button0);
- button0.setOnClickListener(newOnClickListener(){
-
- @Override
- publicvoidonClick(Viewarg0){
-
Stringstr=editText0.getText().toString();
- Toast.makeText(SampleActivity.this,str,Toast.LENGTH_LONG).show();
- }
- });
- super.onCreate(savedInstanceState);
- }
- }
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中添加图片以后是不能删除的,如图所示我可以编辑图片旁边的内容,写入文字。
- <?xmlversion="1.0"encoding="utf-8"?>
-
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
-
android:id="@+id/textviewll"
-
android:orientation="vertical"
-
android:layout_width="fill_parent"
-
android:layout_height="fill_parent"
-
>
-
<EditText
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"
-
android:text="在图片下方"
-
android:textColor="#FF0000"
-
android:drawableBottom="@drawable/jay"
-
android:layout_alignParentTop="true"
-
android:layout_centerHorizontal="true"
-
>
-
</EditText>
-
-
<EditText
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"
-
android:text="在图片上方"
-
android:textColor="#FF0000"
-
android:drawableTop="@drawable/jay"
-
android:layout_alignParentBottom="true"
-
android:layout_centerHorizontal="true"
-
>
-
</EditText>
-
<EditText
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"
-
android:text="在图片左边"
-
android:textColor="#FF0000"
-
android:drawableLeft="@drawable/jay"
-
android:layout_alignParentLeft="true"
-
android:layout_centerVertical="true"
-
>
-
</EditText>
-
<EditText
-
android:layout_width="wrap_content"
-
android:layout_height="wrap_content"
-
android:text="在图片右边"
-
android:textColor="#FF0000"
-
android:drawableRight="@drawable/jay"
-
android:layout_alignParentRight="true"
-
android:layout_centerVertical="true"
-
>
-
</EditText>
-
</RelativeLayout>
4.设置软键盘的Enter键
如图所示我们可以修改软键盘的Enter按钮的样式,可以在代码中监听 按钮点击事件。
- packagecn.m15.xys;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.view.KeyEvent;
- importandroid.view.inputmethod.EditorInfo;
- importandroid.widget.EditText;
- importandroid.widget.TextView;
- importandroid.widget.Toast;
- importandroid.widget.TextView.OnEditorActionListener;
- publicclassKeyBoardActivityextendsActivity{
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- setContentView(R.layout.keyboard);
-
EditTexteditText0=(EditText)findViewById(R.id.txtTest0);
-
- editText0.setOnEditorActionListener(newOnEditorActionListener(){
- @Override
- publicbooleanonEditorAction(TextViewarg0,intarg1,KeyEventarg2){
-
if(arg1==EditorInfo.IME_ACTION_GO){
- Toast.makeText(KeyBoardActivity.this,"你点了软键盘'去往'按钮",
- Toast.LENGTH_SHORT).show();
- }
- returnfalse;
- }
- });
-
EditTexteditText1=(EditText)findViewById(R.id.txtTest1);
-
- editText1.setOnEditorActionListener(newOnEditorActionListener(){
- @Override
- publicbooleanonEditorAction(TextViewarg0,intarg1,KeyEventarg2){
-
if(arg1==EditorInfo.IME_ACTION_SEARCH){
- Toast.makeText(KeyBoardActivity.this,"你点了软键盘'搜索'按钮",
- Toast.LENGTH_SHORT).show();
- }
- returnfalse;
- }
- });
-
EditTexteditText2=(EditText)findViewById(R.id.txtTest2);
-
- editText2.setOnEditorActionListener(newOnEditorActionListener(){
- @Override
- publicbooleanonEditorAction(TextViewarg0,intarg1,KeyEventarg2){
-
if(arg1==EditorInfo.IME_ACTION_SEND){
- Toast.makeText(KeyBoardActivity.this,"你点了软键盘'发送'按钮",
- Toast.LENGTH_SHORT).show();
- }
- returnfalse;
- }
- });
-
EditTexteditText3=(EditText)findViewById(R.id.txtTest3);
-
- editText3.setOnEditorActionListener(newOnEditorActionListener(){
- @Override
- publicbooleanonEditorAction(TextViewarg0,intarg1,KeyEventarg2){
-
if(arg1==EditorInfo.IME_ACTION_NEXT){
- Toast.makeText(KeyBoardActivity.this,"你点了软键盘'下一个'按钮",
- Toast.LENGTH_SHORT).show();
- }
- returnfalse;
- }
- });
-
EditTexteditText4=(EditText)findViewById(R.id.txtTest4);
-
- editText4.setOnEditorActionListener(newOnEditorActionListener(){
- @Override
- publicbooleanonEditorAction(TextViewarg0,intarg1,KeyEventarg2){
-
if(arg1==EditorInfo.IME_ACTION_DONE){
- Toast.makeText(KeyBoardActivity.this,"你点了软键盘'完成'按钮",
- Toast.LENGTH_SHORT).show();
- }
- returnfalse;
- }
- });
-
EditTexteditText5=(EditText)findViewById(R.id.txtTest5);
-
- editText5.setOnEditorActionListener(newOnEditorActionListener(){
- @Override
- publicbooleanonEditorAction(TextViewarg0,intarg1,KeyEventarg2){
-
if(arg1==EditorInfo.IME_ACTION_UNSPECIFIED){
- Toast.makeText(KeyBoardActivity.this,"你点了软键盘'未指定'按钮",
- Toast.LENGTH_SHORT).show();
- }
- returnfalse;
- }
- });
- super.onCreate(savedInstanceState);
- }
- }
监听软键盘的点击事件
- <?xmlversion="1.0"encoding="utf-8"?>
-
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
-
android:id="@+id/textviewll"
-
android:orientation="vertical"android:layout_width="fill_parent"
-
android:layout_height="fill_parent">
-
<EditTextandroid:id="@+id/txtTest0"
-
android:imeOptions="actionGo"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:hint="特殊按钮-去往"
-
></EditText>
-
<EditTextandroid:id="@+id/txtTest1"
-
android:imeOptions="actionSearch"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:hint="特殊按钮-搜索"
-
></EditText>
-
<EditTextandroid:id="@+id/txtTest2"
-
android:imeOptions="actionSend"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:hint="特殊按钮-发送"
-
></EditText>
-
<EditTextandroid:id="@+id/txtTest3"
-
android:imeOptions="actionNext"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:hint="特殊按钮-下一个"
-
></EditText>
-
<EditTextandroid:id="@+id/txtTest4"
-
android:imeOptions="actionDone"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:hint="特殊按钮-完成"
-
></EditText>
-
<EditTextandroid:id="@+id/txtTest5"
-
android:imeOptions="actionUnspecified"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:hint="特殊按钮-未指定"
-
></EditText>
-
</LinearLayout>
5.监听软键盘的按键事件
做项目的时候 有时候须要在用户输入内容时做检测,比如如果用户输入不合法的内容不予以显示在EditText中, 这时候我就要用到addTextChangedListener 用它来监听用户输入状态。可以在监听中改变用户输入的内容或者提示用户输入内容不合法等等。 如图所示我的每次输入操作都可以被正常的监听出来,用户输入内容的正常流程 beforeTextChanged() -》onTextChanged() -》afterTextChanged()然后是通知屏幕绘制
显示在屏幕上 所以我们可以在这三个方法中来修改用户输入内容 或者截取用户输入的内容。
- packagecn.m15.xys;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.text.Editable;
- importandroid.text.TextWatcher;
- importandroid.widget.EditText;
- importandroid.widget.TextView;
- publicclassMonitorKeyActivityextendsActivity{
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- setContentView(R.layout.monitorkey);
-
EditTexteditText=(EditText)findViewById(R.id.monitor_edit_text0);
-
finalTextViewtextView0=(TextView)findViewById(R.id.monitor_text0);
-
finalTextViewtextView1=(TextView)findViewById(R.id.monitor_text1);
-
finalTextViewtextView2=(TextView)findViewById(R.id.monitor_text2);
-
- editText.addTextChangedListener(newTextWatcher(){
-
- @Override
- publicvoidonTextChanged(CharSequencetext,intstart,intbefore,intcount){
- //text输入框中改变后的字符串信息
- //start输入框中改变后的字符串的起始位置
- //before输入框中改变前的字符串的位置默认为0
- //count输入框中改变后的一共输入字符串的数量
- textView1.setText("输入后字符串["+text.toString()+"]起始光标["+start+"]输入数量["+count+"]");
-
- }
-
- @Override
- publicvoidbeforeTextChanged(CharSequencetext,intstart,intcount,intafter){
- //text输入框中改变前的字符串信息
- //start输入框中改变前的字符串的起始位置
- //count输入框中改变前后的字符串改变数量一般为0
- //after输入框中改变后的字符串与起始位置的偏移量
- System.out.println(text.toString());
- textView0.setText("输入前字符串["+text.toString()+"]起始光标["+start+"]结束偏移量["+after+"]");
- }
-
- @Override
- publicvoidafterTextChanged(Editableedit){
- //edit输入结束呈现在输入框中的信息
- textView2.setText("输入结束后的内容为["+edit.toString()+"]即将显示在屏幕上");
- }
- });
-
- super.onCreate(savedInstanceState);
- }
- }
- <?xmlversion="1.0"encoding="utf-8"?>
-
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
-
android:id="@+id/textviewll"
-
android:orientation="vertical"android:layout_width="fill_parent"
-
android:layout_height="fill_parent">
-
<TextView
-
android:id="@+id/monitor_text0"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:textSize="18dip"
-
android:textColor="#FF0000"/>
-
<TextView
-
android:id="@+id/monitor_text1"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:textSize="18dip"
-
android:textColor="#FF0000"
-
/>
-
<TextView
-
android:id="@+id/monitor_text2"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:textSize="18dip"
-
android:textColor="#FF0000"
-
/>
-
<EditText
-
android:id="@+id/monitor_edit_text0"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:hint="监听软键盘按键的输入状态"/>
-
</LinearLayout>
分享到:
相关推荐
雨松MOMO带你做软件 Android软件开发之EditText 详解源码 欢迎大家下载阅读。
[14本经典Android开发教程] 2 Android开发手册 API函数详解 一 TextView的API 1 1 结构 java lang Object android view View android widget TextView 直接子类: Button CheckedTextView Chronometer DigitalClock...
Android核心技术与实例详解 图书简介: 本书以Android应用程序的开发为主题 并结合真实的案例向读者详细介绍了Android的基本组件的使用及应用程序开发的整个流程 全书分为三篇共18章 第一篇以简单易懂的实例为依托 ...
精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会游戏软件分会(CGIA)认证及国际游戏开发教育联合会国际认证。曾经领导和参与...
《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言 第一部分 准备篇 第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 ...
《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏...
本文实例讲述了Android编程之ListView和EditText发布帖子隐藏软键盘功能。分享给大家供大家参考,具体如下: 在Android开发中,手动调用软件盘的隐藏和显示有时候也是非常常见的需求。 EditText控件实现了点击打开软...
精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会游戏软件分会(CGIA)认证及国际游戏开发教育联合会国际认证。曾经领导和参与...
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 创建...
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 创建...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
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 真的准备好了吗...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
本书系统讲解了Android软件开发的基础知识,图文并茂地帮助读者学习和掌握SDK、开发流程以及常用的API等。书中以讲述实战实例为导向,用一个个典型应用生动地引领读者进行项目开发实践。作为一本既及时、又翔实、...
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 真的准备好了吗...