Android控件系列之EditText使用方法

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

1、掌握在Android中如何建立EditText
2、掌握EditText的常用属性
3、掌握EditText焦点的事件、按键的事件(监听器)

介绍:

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

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

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

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

  

XML布局代码如下:

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#DDDDDD"
android:text="请输入您的名字"
android:id ="@+id/et"
android:maxLength = "10"
></EditText>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="点击转换焦点"
></Button>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="点击转换焦点"
android:id ="@+id/et2"
></EditText>
</LinearLayout>

后台代码如下:
复制代码 代码如下:

//表示文本框是否为空
private Boolean isEmpty = true;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText et = (EditText)this.findViewById(R.id.et);
//监听控件的焦点改变事件
et.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
// TODO Auto-generated method stub
//获取触发事件的EditText
EditText clickEditText = (EditText)arg0;
//如果失去焦点
if(arg1 == false)
{
//获取当前文本
String text =clickEditText.getText().toString().trim();
//如果的确人为输入过内容
if(text.length()>0
&text.equals("请输入您的名字")== false)
{
isEmpty = false;
clickEditText.setTextColor(Color.BLACK);
clickEditText.setText(text);
}
else
{
clickEditText.setText("请输入您的名字");
clickEditText.setTextColor(Color.GRAY);
isEmpty = true;
}
}
//如果获得焦点
else
{
clickEditText.setTextColor(Color.BLACK);
//如果处于未编辑状态,则清空“请输入您的名字”这几个字
if(isEmpty == true)
{
clickEditText.setText("");
}
}
}
});
//监听控件有新字符输入
et.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
// TODO Auto-generated method stub
//获取触发事件的EditText
EditText clickEditText = (EditText)arg0;
//获取当前文本
String text =clickEditText.getText().toString().trim();
if(text.length()==10)
{
//提示用户
Toast toast = Toast.makeText(MyActivity.this, "最大长度为10个字符", Toast.LENGTH_SHORT);
toast.setGravity(0, 0, 0);
toast.show();
}
return false;
}
});
}


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

相关文章

  • VerticalBannerView仿淘宝头条实现垂直轮播广告

    VerticalBannerView仿淘宝头条实现垂直轮播广告

    这篇文章主要为大家详细介绍了VerticalBannerView仿淘宝头条实现垂直轮播广告,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • 用Android Studio3.0新功能加快构建速度

    用Android Studio3.0新功能加快构建速度

    本文主要介绍了使用Android Studio3.0新功能,加快Android Studio的构建速度等相关做法。
    2017-11-11
  • Flutter 设置全局字体的实现

    Flutter 设置全局字体的实现

    本文主要介绍了Flutter 设置全局字体的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Android应用内悬浮窗Activity的简单实现

    Android应用内悬浮窗Activity的简单实现

    悬浮窗相信大家应该都不陌生,下面这篇文章主要给大家介绍了关于Android应用内悬浮窗Activity简单实现的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • android 捕获系统异常并上传日志具体实现

    android 捕获系统异常并上传日志具体实现

    这篇文章介绍了android 捕获系统异常并上传日志具体实现,有需要的朋友可以参考一下
    2013-09-09
  • Android OpenGL ES 实现抖音传送带特效(原理解析)

    Android OpenGL ES 实现抖音传送带特效(原理解析)

    这篇文章主要介绍了Android OpenGL ES 实现抖音传送带特效,抖音传送带特效推出已经很长一段时间了,前面也实现了下,最近把它整理出来了,如果你有仔细观测传送带特效,就会发现它的实现原理其实很简单,需要的朋友可以参考下
    2022-07-07
  • 获取Android签名证书的公钥和私钥的简单实例

    获取Android签名证书的公钥和私钥的简单实例

    下面小编就为大家带来一篇获取Android签名证书的公钥和私钥的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Android手机联系人快速索引(手机通讯录)

    Android手机联系人快速索引(手机通讯录)

    最近需要实现一个手机通讯录的快速索引功能。根据姓名首字母快速索引功能,下面通过本篇文章给大家介绍Android手机联系人快速索引(手机通讯录)的相关代码,需要的朋友参考下
    2015-12-12
  • 关于Android 6.0权限的动态适配详解

    关于Android 6.0权限的动态适配详解

    Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应用权限,本文介绍了关于Android 6.0权限动态适配的相关资料,需要的朋友可以参考下。
    2017-11-11
  • Flutter之 ListView组件使用示例详解

    Flutter之 ListView组件使用示例详解

    这篇文章主要为大家介绍了Flutter之 ListView组件使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10

最新评论