android EditText控件事件监听

* * 验证码的发送界面 * @author sC * */ public class VerifyInterface extends Activity { private View titleView;//标题栏布局 private LinearLayout titleLayout;//标题栏布局的容器 private Button rightButton;// 退出按钮 private ProgressBar waite;// 圆形进度条 private TextView txtAlert;//提醒文字 private EditText txt1, txt2, txt3, txt4, txt5, txt6;//接收验证码的6个EditText private String code = "";//最后要发送的验证码 private EditText[] txts; private static int count = 0; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设定界面不显示标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.verifycode); initTitle(); setListener(); } /** * 发送验证码 */ private void sendCode() { txtAlert.setText("发送验证码,请稍候...."); waite.setVisibility(ProgressBar.VISIBLE); for (int i = 0; i < txts.length; i++) { Log.e("sc", String.valueOf(i)); code += txts[i].getText().toString(); } Toast.makeText(VerifyInterface.this, code, Toast.LENGTH_LONG).show(); } /** * 循环给每个EditText添加监听 */ private void addTextListener() { if (txts != null) { for (int i = 0; i < txts.length; i++) { txts[i].setOnKeyListener(key); txts[i].addTextChangedListener(watcher); } } } OnKeyListener key = new View.OnKeyListener() { public boolean onKey(View view, int i, KeyEvent keyevent) { if (i == KeyEvent.KEYCODE_DEL) { reset(); } return false; } }; /** * 内容改变的监听接口 */ TextWatcher watcher = new TextWatcher() { public void onTextChanged(CharSequence charsequence, int i, int j, int k) { /** * 如果当前的EditText中没有值,则执行 */ if (j == 0) { if (count < txts.length - 1) { txts[++count].requestFocus(); } else { sendCode(); } } } public void beforeTextChanged(CharSequence charsequence, int i, int j, int k) { } public void afterTextChanged(Editable editable) { } }; /** * 清空数据 */ public void reset() { txtAlert.setText("请输入验证码"); waite.setVisibility(ProgressBar.INVISIBLE); code = ""; count = 0; for (int i = 0; i < txts.length; i++) { // 清空改变监听 txts[i].removeTextChangedListener(watcher); } for (int j = 0; j < txts.length; j++) { txts[j].setText(""); txts[j].clearFocus(); } txt1.requestFocus(); addTextListener(); } /** * 设置监听动作 */ private void setListener() { findView(); addTextListener(); buttonListener(); } /** * 标题栏右上按钮的监听 */ private void buttonListener() { rightButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { reset(); } }); } /** * 加载控件 */ private void findView() { txt1 = (EditText) findViewById(R.id.txtCode1); txt1.setFocusable(true); txt2 = (EditText) findViewById(R.id.txtCode2); txt3 = (EditText) findViewById(R.id.txtCode3); txt4 = (EditText) findViewById(R.id.txtCode4); txt5 = (EditText) findViewById(R.id.txtCode5); txt6 = (EditText) findViewById(R.id.txtCode6); txts = new EditText[] { txt1, txt2, txt3, txt4, txt5, txt6 }; waite = (ProgressBar) findViewById(R.id.waite); rightButton = (Button) titleLayout.findViewById(R.id.nav_rightButton); txtAlert = (TextView) findViewById(R.id.txtAlert); } /** * 初始化自定义标题栏 */ private void initTitle() { LayoutInflater inflater = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE); titleView = inflater.inflate(R.layout.title, null); titleLayout = (LinearLayout) findViewById(R.id.topLinearLayout); titleLayout.addView(titleView); } /** * 当程序因其他原因暂停返回以后,同样清空数据 */ protected void onResume() { reset(); super.onResume(); } }

主布局文件:

 

<?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="vertical" > <LinearLayout android:id="@+id/topLinearLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="top" > </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:gravity="bottom" android:layout_gravity="bottom"> <TextView android:id="@+id/txtAlert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="请输入验证码" android:textSize="30sp" /> <ProgressBar android:id="@+id/waite" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:visibility="invisible" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:gravity="bottom" > <EditText android:id="@+id/txtCode1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="numberSigned" android:maxLength="1" android:gravity="center"/> <EditText android:id="@+id/txtCode2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="numberSigned" android:maxLength="1" android:gravity="center"/> <EditText android:id="@+id/txtCode3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="numberSigned" android:maxLength="1" android:gravity="center"/> <EditText android:id="@+id/txtCode4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="numberSigned" android:maxLength="1" android:gravity="center"/> <EditText android:id="@+id/txtCode5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="numberSigned" android:maxLength="1" android:gravity="center"/> <EditText android:id="@+id/txtCode6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:inputType="numberSigned" android:maxLength="1" android:gravity="center"/> </LinearLayout> </LinearLayout> </LinearLayout>

标题栏布局文件

 

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="55dip" android:background="@drawable/title_blue" > <Button android:id="@+id/nav_leftButton" android:layout_width="60dip" android:layout_height="45dip" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:text="返回" android:textSize="16sp" /> <TextView android:id="@+id/nav_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_toRightOf="@id/nav_leftButton" android:text="验证" android:textSize="20sp" /> <Button android:id="@+id/nav_rightButton" android:layout_width="60dip" android:layout_height="45dip" android:layout_centerVertical="true" android:layout_marginRight="12dip" android:layout_alignParentRight="true" android:text="退出" android:textSize="16sp" /> </RelativeLayout>

--------------------- 本文来自 苏白2016 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/kakaxi1o1/article/details/17516781?utm_source=copy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值