android中EditText与TextView共舞

本文介绍了一个简单的Android应用案例,展示了如何使用setOnKeyListener监听EditText的键盘输入,并实时更新TextView的内容,实现类似Ajax的即时响应效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()方法替换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值