In Android, you can use “EditText” class to create an editable textbox to accept user input.
在 Android 中使用 “EditText” 类,就可以创建一个文本编辑框,用来接收用户的输入信息。
This tutorial show you how to create a textbox in XML file, and demonstrates the use of key listener to display message typed in the textbox.
本教程将展现,如何在 XML 文件中创建一个文本输入框(textbox),并且为文本输入框添加 键盘监听事件(key listener)
一. EditText 文本输入框
打开 “res/layout/activity_main.xml” 文件, 添加 a “EditText” 组件(component).
File : res/layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<requestFocus />
</EditText>
</LinearLayout>
二. EditText Listener(事件监听)
Attach a key listener inside your activity “onCreate()” method, to monitor following events :在onCreate()方法为文本输入框绑定事件监听,监听以下事件:
If “enter” is pressed , display a floating box with the message typed in the “EditText” box.
如果 Enter 键被按下,则展现文本框中的内容
If “Number 9″ is pressed, display a floating box with message “Number 9 is pressed!”.
如果数字9被按下,则展现“数字9被按下”
File : MainActivity.java
package com.jiangge.edittextkeylistenserdemo;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText edittext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addKeyListener();
}
public void addKeyListener()
{
edittext = (EditText) findViewById(R.id.editText);
edittext.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// 如果鍵被按下,并且按下的是“Enter”键
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER))
{
// 展现信息
Toast.makeText(MainActivity.this, edittext.getText(), Toast.LENGTH_LONG).show();
return true;
}
else if ( (event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_9))
{
// 展现信息
Toast.makeText(MainActivity.this, "9被按下了", Toast.LENGTH_LONG).show();
return true;
}
return false;
}
});
}
}
三、运行:
四、扩展阅读:
1、EditText xml 属性:
android:numeric="integer"(仅允许输入整数数字),
android:phoneNumber="true"(仅允许输入电话号码),
android:autoLink="all"(自动将文字转成超连结)。
例如要限制 EditText 中只允许输入数字的话,我们可以在 XML 描述文档中,透过将 EditText 的参数“android:numeric” 指定为 “true”,以限制使用者只能在 EditText 文字栏位中输入数字。
2、textview.setText(), setText()的参数必须为字符串类型,否则会报错
public class CalcResult extends Activity{
TextView textview;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
textview = (TextView) findViewById(R.id.showResult);
Intent intent = getIntent();
String firstNum = intent.getStringExtra("first_num");
String seconNum = intent.getStringExtra("second_num");
Log.v("first", firstNum);
Log.v("second", seconNum);
int numOne = Integer.parseInt(firstNum);
int numTwo = Integer.parseInt(seconNum);
int result = numOne * numTwo;
textview.setText("result" + "=" + result + "");
// textview.setText( 100); //setText的参数必须为字符串类型,否则会报错
}
}
知识点:
1)setText的参数必须为字符串类型,否则会报错
2)Log.v("first", firstNum); //log日志
3)int numOne = Integer.parseInt(firstNum); //string convert to integer
====================================================================
参考文献:
1、官网文档
2、http://www.mkyong.com/android/android-textbox-example/comment-page-1/#comment-136363