Android EditText详解及示例代码

    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中输入的内容并且显示出来。

XML/HTML代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns: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>

Java代码

public class SampleActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
  setContentView(R.layout.sample); 

  final EditText editText0 = (EditText)findViewById(R.id.sample_edit_text0); 

  Button button0 = (Button)findViewById(R.id.sample_button0); 

  button0.setOnClickListener(new OnClickListener() { 

    @Override
    public void onClick(View arg0) {
    String str = 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中添加图片以后是不能删除的,如图所示我可以编辑图片旁边的内容,写入文字。

XML/HTML代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns: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按钮的样式,可以在代码中监听 按钮点击事件。

Java代码

package cn.m15.xys; 

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.TextView.OnEditorActionListener; 

public class KeyBoardActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
  setContentView(R.layout.keyboard); 

  EditText editText0 = (EditText)findViewById(R.id.txtTest0); 

  editText0.setOnEditorActionListener(new OnEditorActionListener() { 

    @Override
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
    if (arg1 == EditorInfo.IME_ACTION_GO) {
      Toast.makeText(KeyBoardActivity.this, "你点了软键盘'去往'按钮",
        Toast.LENGTH_SHORT).show();
    }
    return false;
    }
  });
  EditText editText1 = (EditText)findViewById(R.id.txtTest1); 

  editText1.setOnEditorActionListener(new OnEditorActionListener() { 

    @Override
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
    if (arg1 == EditorInfo.IME_ACTION_SEARCH) {
      Toast.makeText(KeyBoardActivity.this, "你点了软键盘'搜索'按钮",
        Toast.LENGTH_SHORT).show();
    }
    return false;
    }
  });
  EditText editText2 = (EditText)findViewById(R.id.txtTest2); 

  editText2.setOnEditorActionListener(new OnEditorActionListener() { 

    @Override
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
    if (arg1 == EditorInfo.IME_ACTION_SEND) {
      Toast.makeText(KeyBoardActivity.this, "你点了软键盘'发送'按钮",
        Toast.LENGTH_SHORT).show();
    }
    return false;
    }
  });
  EditText editText3 = (EditText)findViewById(R.id.txtTest3); 

  editText3.setOnEditorActionListener(new OnEditorActionListener() { 

    @Override
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
    if (arg1 == EditorInfo.IME_ACTION_NEXT) {
      Toast.makeText(KeyBoardActivity.this, "你点了软键盘'下一个'按钮",
        Toast.LENGTH_SHORT).show();
    }
    return false;
    }
  });
  EditText editText4 = (EditText)findViewById(R.id.txtTest4); 

  editText4.setOnEditorActionListener(new OnEditorActionListener() { 

    @Override
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
    if (arg1 == EditorInfo.IME_ACTION_DONE) {
      Toast.makeText(KeyBoardActivity.this, "你点了软键盘'完成'按钮",
        Toast.LENGTH_SHORT).show();
    }
    return false;
    }
  });
  EditText editText5 = (EditText)findViewById(R.id.txtTest5); 

  editText5.setOnEditorActionListener(new OnEditorActionListener() { 

    @Override
    public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
    if (arg1 == EditorInfo.IME_ACTION_UNSPECIFIED) {
      Toast.makeText(KeyBoardActivity.this, "你点了软键盘'未指定'按钮",
        Toast.LENGTH_SHORT).show();
    }
    return false;
    }
  });
  super.onCreate(savedInstanceState);
  }
}

  监听软键盘的点击事件

XML/HTML代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns: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/txtTest0"
   android:imeOptions="actionGo"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="特殊按钮-去往"
   ></EditText>
  <EditText android:id="@+id/txtTest1"
   android:imeOptions="actionSearch"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="特殊按钮-搜索"
   ></EditText>
  <EditText android:id="@+id/txtTest2"
   android:imeOptions="actionSend"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="特殊按钮-发送"
   ></EditText>
  <EditText android:id="@+id/txtTest3"
   android:imeOptions="actionNext"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="特殊按钮-下一个"
   ></EditText>
  <EditText android:id="@+id/txtTest4"
   android:imeOptions="actionDone"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:hint="特殊按钮-完成"
   ></EditText>
  <EditText android: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()然后是通知屏幕绘制 显示在屏幕上 所以我们可以在这三个方法中来修改用户输入内容 或者截取用户输入的内容。

Java代码

package cn.m15.xys; 

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView; 

public class MonitorKeyActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
  setContentView(R.layout.monitorkey);
  EditText editText = (EditText)findViewById(R.id.monitor_edit_text0);
  final TextView textView0 = (TextView)findViewById(R.id.monitor_text0);
  final TextView textView1 = (TextView)findViewById(R.id.monitor_text1);
  final TextView textView2 = (TextView)findViewById(R.id.monitor_text2); 

  editText.addTextChangedListener(new TextWatcher() { 

    @Override
    public void onTextChanged(CharSequence text, int start, int before, int count) {
        //text 输入框中改变后的字符串信息
    //start 输入框中改变后的字符串的起始位置
    //before 输入框中改变前的字符串的位置 默认为0
    //count 输入框中改变后的一共输入字符串的数量
    textView1.setText("输入后字符串 [ " + text.toString() + " ] 起始光标 [ " + start + " ] 输入数量 [ " + count+" ]"); 

    } 

    @Override
    public void beforeTextChanged(CharSequence text, int start, int count,int after) {
    //text 输入框中改变前的字符串信息
    //start 输入框中改变前的字符串的起始位置
    //count 输入框中改变前后的字符串改变数量一般为0
    //after 输入框中改变后的字符串与起始位置的偏移量
    System.out.println(text.toString());
    textView0.setText("输入前字符串 [ " + text.toString() + " ]起始光标 [ " + start + " ]结束偏移量 [" + after + " ]");
    } 

    @Override
    public void afterTextChanged(Editable edit) {
    //edit 输入结束呈现在输入框中的信息
    textView2.setText("输入结束后的内容为 [" + edit.toString()+" ] 即将显示在屏幕上");
    }
  }); 

  super.onCreate(savedInstanceState);
  }
}

XML/HTML代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns: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>

希望通过此文,大家可以对Android RditText的知识掌握,谢谢大家对本站的支持!

(0)

相关推荐

  • Android编程开发之EditText中inputType属性小结

    本文总结分析了Android编程开发之EditText中inputType属性.分享给大家供大家参考,具体如下: android 1.5以后添加了软件虚拟键盘的功能,所以在输入提示中将会有对应的软键盘模式. android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用.这也大大的方便的操作.有时需要虚拟键盘只为字符或只为数字.所以inputType尤为重要. 复制代码 代码如下: <EditText android:layout_width="fill

  • Android 带有删除按钮的EditText

    MainActivity如下: package cc.textview5; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; import android.app.Activity;

  • Android中EditText如何去除边框添加下划线

    废话不多说了,直接给大家贴代码了. <span style="font-family: Arial, Helvetica, sans-serif;"><?xml version="1.0" encoding="utf-8"?> </span> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  • Android UI设计系列之自定义EditText实现带清除功能的输入框(3)

    最近公司的产品在陆续做升级,上级领导给的任务是优化代码结构以及项目架构,力争把项目写的精巧简练,于是我们满工程找冗余... 我们都知道每一个项目基本上都是有登陆页的,在登陆页中肯定是少不了输入框了,当我们在输入框中输入数据后如果输入的内容不正确或者是错误的或者是想重新输入,如果嗯键盘上的删除键就得一个一个的去删除,这时候我们或许就想要是能有一个标记当点击了这个标记能把我们刚刚输入的内容清空就好了.这样可以极大的提升用户体验,就拿QQ的登陆来说吧,效果如下: 当点击密码框右侧的小×图标时输入的内容

  • Android中EditText显示明文与密码的两种方式

    效果图如下所述: 布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pa

  • Android中解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题

    1.原来是将EditView放到了popupwindow,发现EditView原有的复制.粘贴.全选.选择功能失效了,所以便用DialogFragment代替了popupWindow 直接上代码 ①.先看布局文件 <?xml version="." encoding="utf-"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  • Android EditText常用属性功能汇总

    本文总结分析了Android EditText常用属性.分享给大家供大家参考,具体如下: android:hint="请输入数字!"//设置显示在空间上的提示信息 android:numeric="integer"//设置只能输入整数,如果是小数则是:decimal android:singleLine="true"//设置单行输入,一旦设置为true,则文字不会自动换行. android:password="true"//设

  • Android EditText限制输入字数的方法

    本文实例讲述了Android EditText限制输入字数的方法.分享给大家供大家参考,具体如下: //新浪微博字数限制 private static final int WEIBO_CONTENT_LENGTH_LIMITED = 140; //添加微博内容edittext mInputEditText.addTextChangedListener(mTextWatcher); private TextWatcher mTextWatcher = new TextWatcher() { pri

  • 全面解析Android中对EditText输入实现监听的方法

    在 Android design support 包中提供了一种在输入不合适字符时一直显示的提示方式来显示,现在已经开始在更多的应用上被使用了:这些 Android app 在显示他们的错误提示时采用的不同的方式常常让人感觉非常的不和谐. 即这个一直显示的错误消息是在 TextInputLayout 中的 EditText 周围的.这也是,作为一个奖励,提供了材料设计风格中,活泼的浮动标签在一个 APP 的用户体验中常常是最无聊的部分. 这里来讨论如何在你的输入表单上去创建一个通用的.可重用的组

  • Android EditText详解及示例代码

       EditText在API中的结构 java.lang.Object android.view.View android.widget.TextView android.widget.EditText 已知直接子类: AutoCompleteTextView, ExtractEditText 已知间接子类: MultiAutoCompleteTextView EditText是TextView的直接子类 所以EditText会继承父类TextView的一些方法.下面我用自己写的一个Demo

  • Android Service详解及示例代码

    Android Service 详细介绍: 1.Service的概念 2.Service的生命周期 3.实例:控制音乐播放的Service 一.Service的概念 Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,只不过它没有UI界面,是在后台运行的组件. 二.Service的生命周期 Service对象不能自己启动,需要通过某个Activity.Service或者其他Context对象来启动.启动的方法有两种,Context.startS

  • Android GPS详解及示例代码

    LBS(Location Based Services)直译的话就是基于地理位置的服务,这里面至少有两层意思,第一要能轻易的获取当前的地理位置,譬如经纬度海拔等,另一个就是在当前位置的基础上提供增值服务,譬如找附近的加油站.餐馆.酒店等.这里面的第一步:获取用户当前位置,我们就可以用Android的GPS定位服务来得到.Android提供了基于网络的定位服务和基于卫星的定位服务两种.在设置->位置和安全设置里面的前三项就是,最后一个增强型GPS是为了辅助快速找卫星的. 那么我们现在就写一个简单的

  • Android SQLite详解及示例代码

    在Android中使用SQLite数据库的入门指南,打算分下面几部分与大家一起分享, 1.什么是SQLite 2.Android中使用SQLite 一.什么是SQLite SQLite是一款开源的.轻量级的.嵌入式的.关系型数据库.它在2000年由D. Richard Hipp发布,可以支援Java.Net.PHP.Ruby.Python.Perl.C等几乎所有的现代编程语言,支持Windows.Linux.Unix.Mac OS.Android.IOS等几乎所有的主流操作系统平台. SQLit

  • Android Menu详解及示例代码

    Android Menu 详细介绍: 1.选项菜单 OptionsMenu 2.上下文菜单 ContextMenu 3.子菜单 SubMenu 组成Android用户界面的除了View以外,还有菜单和对话框,这一讲我们就共同学习一下菜单的使用. 菜单是用户界面中最常见的元素,使用也非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu),下面分别举例说明. 一.选项菜单 OptionsMenu Andro

  • Android Dialog详解及实例代码

     Android Dialog详解及实例代码 概述: Android开发中最常用的就是Dialog类,除了自定义dialog布局,最多的就是用在弹出对话框.进度条.输入框.单选.复选框. 1.选择对话框: AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setTitle("选择对话框"); dialog.setMessage("请选择确认或取消"); dialog.setCance

  • AngularJs bootstrap详解及示例代码

    AngularJs学习笔记系列第一篇,希望我可以坚持写下去.本文内容主要来自 http://docs.angularjs.org/guide/ 文档的内容,但也加入些许自己的理解与尝试结果. 一.总括 本文用于解释Angular初始化的过程,以及如何在你有需要的时候对Angular进行手工初始化. 二.Angular <script> 标签 本例用于展示如何通过推荐的路径整合Angular,实现自动初始化. <!doctype html> <html xmlns:ng=&qu

  • Android ViewPagerIndicator详解及实例代码

    Android ViewPagerIndicator详解及实例代码 关于自定义View的属性零碎知识 自定义View和自定义属性的知识不再此提及,这里着重说的是属性在自定义View中的获取方式,自定义的属性如下: <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="Wisely"> <attr name=&

  • Android CoordinatorLayout详解及实例代码

    Android CoordinatorLayout详解 一.CoordinatorLayout有什么作用 CoordinatorLayout作为"super-powered FrameLayout"基本实现两个功能: 1.作为顶层布局 2.调度协调子布局 CoordinatorLayout使用新的思路通过协调调度子布局的形式实现触摸影响布局的形式产生动画效果.CoordinatorLayout通过设置子View的 Behaviors来调度子View.系统(Support V7)提供了A

  • Android ToggleButton 详解及实例代码

    Android ToggleButton 详解 在Android的开发过程中,对于ToggleButton的使用频率也是相当的高的,下面我就来说一下,这个组件的两种使用方式. 第一种是简单的使用,利用Toast的方式弹出提示语句 需要注意的是要想自定义ToggleButton的显示的内容,就需要设置其TextOn和TextOff的内容. <ToggleButton android:id="@+id/toggleButton1" android:layout_width="

随机推荐