Android EditText详解及示例代码

 更新时间:2016年09月04日 11:01:10   投稿:lqh  
本文主要介绍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的知识掌握,谢谢大家对本站的支持!

相关文章

  • Android基于讯飞语音SDK实现语音识别

    Android基于讯飞语音SDK实现语音识别

    本例子是一个调用讯飞语音识别SDK的例子源码是一个最纯净的Demo比较容易看懂。实现的是点击按钮开始语音监听,手机需要联网,2/3G的均可,希望本文对大家学习Android有所帮助
    2016-06-06
  • 常用Android布局文件优化技巧总结

    常用Android布局文件优化技巧总结

    Android布局加载是Android应用程序的重要组成部分,布局加载是指将 XML文件中定义的视图层次结构加载到内存中,在这篇文章中,我们将深入探讨 Android 布局加载的原理,包括 Android 布局文件的结构和布局文件的常见问题等方面,需要的朋友可以参考下
    2023-07-07
  • Android自定义View绘制彩色圆弧

    Android自定义View绘制彩色圆弧

    这篇文章主要为大家详细介绍了Android自定义View绘制彩色圆弧,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Flutter-AnimatedWidget组件源码示例解析

    Flutter-AnimatedWidget组件源码示例解析

    这篇文章主要为大家介绍了Flutter-AnimatedWidget组件源码示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Android Rreact Native 常见错误总结

    Android Rreact Native 常见错误总结

    这篇文章主要介绍了Android Rreact Native 常见错误总结的相关资料,需要的朋友可以参考下
    2017-06-06
  • Android自定义View实现拖动选择按钮

    Android自定义View实现拖动选择按钮

    这篇文章主要为大家详细介绍了Android自定义View实现拖动选择按钮的具体代码,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Flutter实现牛顿摆动画效果的示例代码

    Flutter实现牛顿摆动画效果的示例代码

    牛顿摆大家应该都不陌生,也叫碰碰球、永动球(理论情况下),那么今天我们用Flutter实现这么一个理论中的永动球,可以作为加载Loading使用,需要的可以参考一下
    2022-04-04
  • 详解Android studio 3+版本apk安装失败问题

    详解Android studio 3+版本apk安装失败问题

    这篇文章主要介绍了详解Android studio 3+版本apk安装失败问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Android studio将Module打包成Jar的方法

    Android studio将Module打包成Jar的方法

    这篇文章主要介绍了Android studio将Module打包成Jar的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • android 使用OkHttp上传多张图片的实现代码

    android 使用OkHttp上传多张图片的实现代码

    这篇文章主要介绍了android 使用OkHttp上传多张图片的相关资料,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07

最新评论