Android学习之键盘事件

java代码:

 1 package com.example.keyboardtest;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.view.KeyEvent;
 6 import android.view.View;
 7 import android.view.View.OnKeyListener;
 8 import android.widget.EditText;
 9 import android.widget.TextView;
10 
11 public class MainActivity extends Activity {
12     private TextView text; 
13     private EditText edit;
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.activity_main);
18         //初始化值
19         text=(TextView)findViewById(R.id.view);
20         edit=(EditText)findViewById(R.id.edit);
21         //设置键盘监听:
22         edit.setOnKeyListener(new MyOnKeyListener());
23     }
24     //键盘的监听事件使用View.OnKeyListener()接口进行处理
25     private class MyOnKeyListener implements OnKeyListener{
26         @Override
27         public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
28             //键盘按下与松开操作:
29             switch (arg2.getAction()) {
30             case KeyEvent.ACTION_UP:  //松开按键
31                 String string=edit.getText().toString();
32                 text.setText(str(string));
33                 break;
34             case KeyEvent.ACTION_DOWN: //键盘按下
35                 break;
36             default:
37                 break;
38             }
39             return false;
40         }
41         //输入银行卡账号,用大字回显出来,每4个数字用“—”隔开
42         private String str(String total) {
43             String count="";
44             for(int i=0;i<=total.length()/4;i++) {
45                 //分段后最后不加“—”
46                 if(i*4+4<total.length()) {
47                     count=count+total.subSequence(i*4, Math.min(i*4+4,total.length()))+"-";
48                 }else {
49                     count=count+total.subSequence(i*4, Math.min(i*4+4, total.length()));
50                 }
51             }
52             return count;
53         }
54     }
55 }

 activity_main.xml代码:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical">
 6     
 7     <TextView
 8         android:id="@+id/theme"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:text="手机号"/>
12     <EditText
13         android:id="@+id/edit"
14         android:layout_width="wrap_content"
15         android:layout_height="wrap_content"
16         android:ems="12"
17         android:maxLength="12"/>
18     <!-- android:ems属性表示将对应控件的宽度设为10个字符的宽度,设置该属性后,一行中最大只能显示该宽度的大小
19         注意:当layout_width="match_parent"时,该属性不会生效
20         android:maxLength属性表示最大可输入的字符数 -->
21     
22     <TextView 
23         android:id="@+id/view"
24         android:layout_width="wrap_content"
25         android:layout_height="wrap_content"
26         android:textSize="20sp"
27         android:text=""/>
28     
29 </LinearLayout>

 AndroidManifest.xml代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.example.keyboardtest"
 4     android:versionCode="1"
 5     android:versionName="1.0" >
 6 
 7     <uses-sdk
 8         android:minSdkVersion="18"
 9         android:targetSdkVersion="22" />
10 
11     <application
12         android:allowBackup="true"
13         android:icon="@drawable/ic_launcher"
14         android:label="@string/app_name"
15         android:theme="@style/AppTheme" >
16         <activity
17             android:name=".MainActivity"
18             android:label="@string/app_name" >
19             <intent-filter>
20                 <action android:name="android.intent.action.MAIN" />
21                 <category android:name="android.intent.category.LAUNCHER" />
22             </intent-filter>
23         </activity>
24     </application>
25 
26 </manifest>

说明:

1、Android中对键盘的监听使用View.OnKeyListener()接口进行处理

2、Android中对按钮的监听使用OnClickListener()接口进行处理

3、android:ems属性:一行允许输入的最大的字符数

   android:maxLength属性:最多能输入的字符数

原文地址:https://www.cnblogs.com/hh8888-log/p/9764394.html