现在的位置: 首页 > 综合 > 正文

android中EditText与TextView共舞

2013年11月05日 ⁄ 综合 ⁄ 共 1595字 ⁄ 字号 评论关闭

setOnKeyListener事件

范例说明

EditText Widget设计的初衷是为了等待User输入而准备的,那么在User输入的同时,又该如何拦截所输入的文字呢?Android的多数Widget都有setOnKeyListener事件,通过Listener捕捉User输入的键盘事件。

接着,本范例将以EditTextTextView示范如何在捕捉User键盘输入文字的同时实时取得文字,同步显示于TextView,类似手机版的Ajax效果,实时输入实时输出。

<!--[if !vml]-->

范例程序

src/irdc.ex04_01/EX04_01.java

主程序中唯一也同时是最关键之处,便是利用EditText.OnKeyListener来拦截EditText的键盘输入事件,仅需在其中重写onKey()方法,在onKey()方法中,将EditText.getText()取出的文字,显示于TextView当中,是一个简单易懂的范例练习。

 

/* import程序略 */

import android.view.KeyEvent;

 

public class EX04_01 extends Activity

{

  /*声明 TextViewEditText对象*/

  private TextView mTextView01;

  private EditText mEditText01;  

 

  /** Called when the activity is first created. */

    @Override

  public void onCreate(Bundle savedInstanceState)

  {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

   

    /*取得TextViewEditText*/  

    mTextView01 = (TextView)findViewById(R.id.myTextView);

    mEditText01 = (EditText)findViewById(R.id.myEditText);

   

    /*设置EditTextOnKeyListener事件来启动*/

    mEditText01.setOnKeyListener(new EditText.OnKeyListener()

    {

      @Override

      public boolean onKey(View arg0, int arg1, KeyEvent arg2)

      {

        // TODO Auto-generated method stub

        /*设置TextView显示EditText所输入的内容*/

        mTextView01.setText(mEditText01.getText());

        return false;

      }

    });

}

}

 

扩展学习

这个实时输入实时显示的效果可以扩展到许多手机应用程序中,不妨尝试在OnKey Listener()里做实时文字过滤效果,例如:当User输入不雅的文字时,可以提示User不接受部分关键字。以输入Shit为例,在TextView就会出现:Sh*t,此种做法可以过滤掉不雅文字的出现。

此外,不仅是Widget才具备setOnKeyListener方法重写的功能,事实上,在View里也有View.setOnKeyListener,也就是捕捉User单击键盘时的事件处理,但请特别注意,需拦截这个事件,即View要取得焦点(Focus)才能触发onKeyDown事件。最后提醒你,旧版本当中的View.set KeyListener类已经被删除,1.0r2版之后,已经改用View.setOnKeyListener()方法替换。

抱歉!评论已关闭.