zoukankan      html  css  js  c++  java
  • Android控件系列之EditText

    1、掌握在Android中如何建立EditText

    2、掌握EditText的常用属性

    3、掌握EditText焦点的事件、按键的事件(监听器)

    介绍:

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

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

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

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

      

    XML布局代码如下:

    1 <?xml version="1.0" encoding="utf-8"?>
    2  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3 android:orientation="vertical"
    4 android:layout_width="fill_parent"
    5 android:layout_height="fill_parent"
    6 >
    7  <EditText
    8 android:layout_width="fill_parent"
    9 android:layout_height="wrap_content"
    10 android:textColor="#DDDDDD"
    11 android:text="请输入您的名字"
    12 android:id ="@+id/et"
    13 android:maxLength = "10"
    14
    15 ></EditText>
    16 <Button
    17 android:layout_width="fill_parent"
    18 android:layout_height="wrap_content"
    19 android:text="点击转换焦点"
    20 ></Button>
    21 <EditText
    22 android:layout_width="fill_parent"
    23 android:layout_height="wrap_content"
    24
    25 android:text="点击转换焦点"
    26 android:id ="@+id/et2"
    27 ></EditText>
    28 </LinearLayout>

    后台代码如下:

    1 //表示文本框是否为空
    2 private Boolean isEmpty = true;
    3
    4 /** Called when the activity is first created. */
    5 @Override
    6 public void onCreate(Bundle savedInstanceState) {
    7 super.onCreate(savedInstanceState);
    8 setContentView(R.layout.main);
    9
    10 EditText et = (EditText)this.findViewById(R.id.et);
    11 //监听控件的焦点改变事件
    12 et.setOnFocusChangeListener(new OnFocusChangeListener() {
    13
    14 @Override
    15 public void onFocusChange(View arg0, boolean arg1) {
    16 // TODO Auto-generated method stub
    17 //获取触发事件的EditText
    18 EditText clickEditText = (EditText)arg0;
    19
    20 //如果失去焦点
    21 if(arg1 == false)
    22 {
    23 //获取当前文本
    24 String text =clickEditText.getText().toString().trim();
    25 //如果的确人为输入过内容
    26 if(text.length()>0
    27 &text.equals("请输入您的名字")== false)
    28 {
    29 isEmpty = false;
    30 clickEditText.setTextColor(Color.BLACK);
    31 clickEditText.setText(text);
    32 }
    33 else
    34 {
    35 clickEditText.setText("请输入您的名字");
    36 clickEditText.setTextColor(Color.GRAY);
    37 isEmpty = true;
    38 }
    39 }
    40 //如果获得焦点
    41 else
    42 {
    43 clickEditText.setTextColor(Color.BLACK);
    44 //如果处于未编辑状态,则清空“请输入您的名字”这几个字
    45 if(isEmpty == true)
    46 {
    47 clickEditText.setText("");
    48 }
    49 }
    50 }
    51 });
    52
    53 //监听控件有新字符输入
    54 et.setOnKeyListener(new OnKeyListener() {
    55
    56 @Override
    57 public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
    58 // TODO Auto-generated method stub
    59 //获取触发事件的EditText
    60 EditText clickEditText = (EditText)arg0;
    61 //获取当前文本
    62 String text =clickEditText.getText().toString().trim();
    63
    64
    65 if(text.length()==10)
    66 {
    67 //提示用户
    68 Toast toast = Toast.makeText(MyActivity.this, "最大长度为10个字符", Toast.LENGTH_SHORT);
    69 toast.setGravity(0, 0, 0);
    70 toast.show();
    71 }
    72 return false;
    73 }
    74 });
    75
    76 }

    总结:

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

    转 自:http://www.cnblogs.com/wt616/archive/2011/06/21/2086056.html

  • 相关阅读:
    Vue学习笔记
    用vue-cli3搭建vue项目
    Vue 封装可向左向右查看图片列表的组件
    css修改整个项目的滚动条样式
    Vue 可输入可下拉组件的封装
    es6 实现数组的操作
    JS 实现兼容IE浏览器报警提示声音
    SPRINGBOOT9--AOP的使用(本例展示统一处理Web请求日志)
    SPRINGBOOT8--log4j日志记录
    SPRINGBOOT7--使用@Async实现异步调用
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2207581.html
Copyright © 2011-2022 走看看