在做Android计算器程序时,上网正好找到了这个代码:
EditText Widget的设计是为了等待User输入而准备的,那么在User输入的同时,又该如何拦截所输入的文字呢?Android的多数Widget都有setOnKeyListener事件,以此Listener捕捉User输入的键盘事件。
下面的例子是实现TextView实时显示EditText输入的内容。
运行结果
程序
1、ex04_1/src/com.example.ex04_1/ex04_1.java
主程序中唯一也是关键之处,便是利用EditText.OnKeyListener来拦截EditText的键盘输入事件,仅需要在其中重写onKey()方法,在onKey()方法中,将EditText.getText()取出来的文字,显示于TextView当中。
package com.example.ex04_1;
import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.widget.EditText; import android.widget.TextView;
public class ex04_1 extends Activity { /*声明 TextView EditText对象*/ 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); /*取得TextView EditText*/ mTextView01=(TextView)findViewById(R.id.TextView01); mEditText01=(EditText)findViewById(R.id.EditText01); /*设置EditText用OnKeyListene事件来启动*/mEditText01.setOnKeyListener(new EditText.OnKeyListener(){ @Overridepublic boolean onKey(View arg0, int arg1, KeyEvent arg2) { // TODO Auto-generated method stub /*设置TextView显示EditText所输入的内容*/ mTextView01.setText(mEditText01.getText()); return false; } }); } }
这个是csdn上的博客,原作者是 ;由于我初出茅庐所以就只能读懂其中的一点点内容,
mEditText = (EditText) findViewById(R.id.etext);mTextView = (TextView) findViewById(R.id.txsr);mEditText.setOnKeyListener(new EditText.OnKeyListener(){ @Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) { //每次按Enter的时候才会显示;mTextView.setText(mEditText.getText());//不知道,这里面的FALSE和TRUE有啥区别,都能显示//return false;
returntrue;
}});其实就是调用一个setOnKeyListener这个函数,以及内部的OnKeyListener这个函数,但是,有个不好的地方,这段代码如果只是用于那种只输入一次的输出框中,还是很好用的,但是如果是用于计算器这样的经常输入的显示框中就不怎么好用了。因为只显示一次了。