android: EditText 输入固定位数后光标自动移动到下一EditText
2013-08-23 15:43
633 查看
类似于Windows输入IP地址的效果,输入三位后光标自动定位到下一格进行输入。
以下为布局文件activity_main.xml
以下为.Java文件
以下为布局文件activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <EditText android:id="@+id/editText1" android:layout_width="50dp" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:inputType="number" > <requestFocus /> </EditText> <EditText android:id="@+id/editText2" android:layout_width="50dp" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:inputType="number" /> <EditText android:id="@+id/editText3" android:layout_width="50dp" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:inputType="number" /> <EditText android:id="@+id/editText4" android:layout_width="50dp" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:inputType="number" /> </LinearLayout>
以下为.Java文件
package com.chuanchuan.edittextdemo; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; import android.app.Activity; public class MainActivity extends Activity { private EditText et1; private EditText et2; private EditText et3; private EditText et4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et1=(EditText) findViewById(R.id.editText1); et2=(EditText) findViewById(R.id.editText2); et3=(EditText) findViewById(R.id.editText3); et4=(EditText) findViewById(R.id.editText4); final EditText[] mArray = new EditText[] { et1,et2, et3, et4 }; for (int i = 0; i < mArray.length; i++) { final int j = i; mArray[j].addTextChangedListener(new TextWatcher() { private CharSequence temp; private int sStart; private int sEnd; @Override public void onTextChanged(CharSequence s, int start, int before, int count) { temp = s; } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { sStart = mArray[j].getSelectionStart(); sEnd = mArray[j].getSelectionEnd(); if (temp.length() == 3 && (j == 0 || j == 1 || j == 2)) { mArray[j + 1].setFocusable(true); mArray[j + 1].setFocusableInTouchMode(true); mArray[j + 1].requestFocus(); } if (temp.length() > 3) { s.delete(sStart - 1, sEnd); int tSelection = sStart; mArray[j].setText(s); mArray[j].setSelection(tSelection); } } }); } } }
相关文章推荐
- android EditText如何使光标随着输入内容移动
- Android EditText设置固定行高,自动删除超出文本
- Android EditText控制小数点位数及输入限制工具类
- Android EditText输入光标居于开头最开始位置
- 多个EditText之间的光标自动移动
- Android之怎么隐藏EditText光标和自动显示键盘
- 修改Android EditText光标,限制EditText的输入字数
- android edittext输入小写字母自动转大写
- android EditView自动判断输入长度,并限制字数,然后将光标停在最后
- Android EditText限制输入一些固定字符的属性
- Android 限制EditText输入小数点后面位数
- android editText自动弹出软键盘(输入键盘)
- Android EditText 输入数据时限制小数位数。
- EditText的光标选择(android.text.Selection)&输入指定字符
- android EditText 输入字母时小写自动转为大写
- android edittext限制输入小数位数,限制输入数字大小
- Android EditText 输入回车符自动跳转至下一个EditText
- Android EditText输入光标居于开头最开始位置
- android:限制EditText输入位数
- android 设置字体颜色、EditText自动输入转换成大写字母的多种方式