0
点赞
收藏
分享

微信扫一扫

Android 系列 2.12使用KeyListener控制输入


2.12使用KeyListener控制输入


问题
您的应用程序包含要在其中限制用户仅输入数字的文本框; 此外,在某些情况下,您只希望允许使用正数,整数或日期。

Android提供了KeyListener类来帮助您限制用户只输入数字/正数/整数/正整数等等。
讨论
Android.text.method包包含一个KeyListener接口,以及一些类,例如DigitsKeyListener和DateKeyListener,它们实现了这个接口。
示例2-15是演示这些类中的一些类的示例应用程序。 此布局文件创建五个TextView和五个EditView; TextView显示它们各自的EditText允许的输入类型。

实施例2-15。 使用TextView和EditTexts布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textview1"
android:text="digits listener with signs and decimal points"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/editText1"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textview2"
android:text="digits listener without signs and decimal points"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/editText2"
/>
<TextView
android:layout_width="fill_parent"

android:layout_height="wrap_content"
android:id="@+id/textview3"
android:text="date listener"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/editText3"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textview4"
android:text="multitap listener"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/editText4"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textview5"
android:text="qwerty listener"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/editText5"
/>
</LinearLayout>


示例2-16是将EditText输入限制为数字,正整数等(请参阅允许的键组的注释)的活动代码。


实施例2-16。 主要活动

import android.app.Activity;
import android.os.Bundle;
import android.text.method.DateKeyListener;
import android.text.method.DigitsKeyListener;
import android.text.method.MultiTapKeyListener;
import android.text.method.QwertyKeyListener;
import android.text.method.TextKeyListener;
import android.widget.EditText;
public class KeyListenerDemo extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//allows digits with positive/negative signs and decimal points
EditText editText1=(EditText)findViewById(R.id.editText1);
DigitsKeyListener digkl1=DigitsKeyListener.getInstance(true,true);
editText1.setKeyListener(digkl1);
//allows positive integer only (no decimal values allowed)
EditText editText2=(EditText)findViewById(R.id.editText2);
DigitsKeyListener digkl2=DigitsKeyListener.getInstance();
editText2.setKeyListener(digkl2);
//allows date only
EditText editText3=(EditText)findViewById(R.id.editText3);
DateKeyListener dtkl=new DateKeyListener();
editText3.setKeyListener(dtkl);
//allows multitap with 12-key keypad layout
EditText editText4=(EditText)findViewById(R.id.editText4);
MultiTapKeyListener multitapkl =
new MultiTapKeyListener(TextKeyListener.Capitalize.WORDS,true);
editText4.setKeyListener(multitapkl);
//allows qwerty layout for typing
EditText editText5=(EditText)findViewById(R.id.editText5);
QwertyKeyListener qkl =
new QwertyKeyListener(TextKeyListener.Capitalize.SENTENCES,true);
editText5.setKeyListener(qkl);
}
}



要使用MultiTapKeyListener,您的手机应该支持12键布局,它需要激活。 要激活12键布局,请转到设置→语言和键盘→屏幕键盘布局,然后选择“电话布局”选项。




以下侦听器类型将用于编写此类型的应用程序。


BaseKeyListener这是一个关键侦听器的抽象基类。


DateTimeKeyListener用于在同一文本字段中输入日期和时间。


MetaKeyKeyListener此基类封装了用于跟踪元键(如SHIFT,ALT和SYM)状态以及选择文本的伪状态的行为。


NumberKeyListener这是用于数字文本输入。


TextKeyListener这是键入正常文本的关键侦听器。


TimeKeyListener这是用于在文本字段中输入时间。


举报

相关推荐

0 条评论