《Android应用开发攻略》——2.13 用KeyListener控制输入

    xiaoxiao2022-06-09  191

    2.13 用KeyListener控制输入

    Pratik Rupwal2.13.1 问题你的应用程序包含少数文本框,希望在这些文本框中限制用户仅能输入数字;而且,在某些情况下,你希望仅允许输入数字、整数或者日期。2.13.2 解决方案Android提供KeyListener类,帮助你限制用户仅能输入数字/整数/正整数等。2.13.3 讨论Android.text.method包含一个KeyListener接口,以及实现这一接口的DigitsKeyListener和DateKeyListener等类。例2-17是一个样例应用,展示了这些类的使用。这个布局文件创建5个TextView和5个EditView;TextView显示对应EditText所允许的输入类型。例2-17:TextView和EditText布局

    <?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-18是限制EditText输入为数字、正整数等的活动的代码(允许的按键组参见注释)。例2-18:主活动

    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 { /** 在活动第一次创建时调用 */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //允许输入带有正/负符号和小数点的数字 EditText editText1=(EditText)findViewById(R.id.editText1); DigitsKeyListenerdigkl1=DigitsKeyListener.getInstance(true,true); editText1.setKeyListener(digkl1); //只允许正整数(不允许小数) EditText editText2=(EditText)findViewById(R.id.editText2); DigitsKeyListener digkl2=DigitsKeyListener.getInstance(); editText2.setKeyListener(digkl2); //只允许日期 EditText editText3=(EditText)findViewById(R.id.editText3); DateKeyListener dtkl=new DateKeyListener(); editText3.setKeyListener(dtkl); //允许12键小键盘布局的多点触摸 EditText editText4=(EditText)findViewById(R.id.editText4); MultiTapKeyListener multitapkl = new MultiTapKeyListener(TextKeyListener.Capitalize.WORDS,true); editText4.setKeyListener(multitapkl); //允许qwerty布局键盘输入 EditText editText5=(EditText)findViewById(R.id.editText5); QwertyKeyListener qkl = new QwertyKeyListener(TextKeyListener.Capitalize.SENTENCES,true); editText5.setKeyListener(qkl); } }

    为了使用MultiTapKeyListener,你的手机应该支持12键布局并激活该布局。激活12键布局的方法是选择Settings(设置)→Language and Keyboard(语言与键盘)→On-screen Keyboard Layout(屏显键盘布局),然后选择“Phone layout”(电话布局)选项。2.13.4 参阅下表中的Listener类型有助于编写此类应用。


    最新回复(0)