第一个app-进阶二::1、EditText退格::2、焦点转移--更人性化
1、EditText退格
按下自定义的按钮—>EditText退格
<Button android:layout_width="80dp" android:layout_height="40dp" android:layout_weight="1" android:background="@drawable/button_shape" android:textSize="10pt" android:textColor="@android:color/black" android:text="退格" android:onClick="backGrid" />
----->按下按钮--调用backGrid方法
/**----- 退格 ----------------------*/ public void backGrid(View view){ EditText edit_text1 = (EditText) findViewById(R.id.edit_text1); EditText edit_text2 = (EditText) findViewById(R.id.edit_text2); EditText edit_text3 = (EditText) findViewById(R.id.edit_text3); if (edit_text1.isFocused()) { //动作按下 int action = KeyEvent.ACTION_DOWN; //code:删除,其他code也可以,例如 code = 0 int code = KeyEvent.KEYCODE_DEL; KeyEvent event = new KeyEvent(action, code); edit_text1.onKeyDown(KeyEvent.KEYCODE_DEL, event); //抛给系统处理了 }else if (edit_text2.isFocused()) { //动作按下 int action = KeyEvent.ACTION_DOWN; //code:删除,其他code也可以,例如 code = 0 int code = KeyEvent.KEYCODE_DEL; KeyEvent event = new KeyEvent(action, code); edit_text2.onKeyDown(KeyEvent.KEYCODE_DEL, event); //抛给系统处理了 } else if (edit_text3.isFocused()) { //动作按下 int action = KeyEvent.ACTION_DOWN; //code:删除,其他code也可以,例如 code = 0 int code = KeyEvent.KEYCODE_DEL; KeyEvent event = new KeyEvent(action, code); edit_text3.onKeyDown(KeyEvent.KEYCODE_DEL, event); //抛给系统处理了 } }
2、焦点转移--更人性化
/**----- 计算末端MAC地址 ------------*/ public void getResult(View view){ EditText edit_text1 = (EditText) findViewById(R.id.edit_text1); EditText edit_text2 = (EditText) findViewById(R.id.edit_text2); EditText edit_text3 = (EditText) findViewById(R.id.edit_text3); TextView result = (TextView) findViewById(R.id.textview_macEnd); //清除错误消息框 edit_text1.setError(null); edit_text2.setError(null); edit_text3.setError(null); //对所有输入框的文本内容进行检查--是否为空 if("".equals(edit_text1.getText().toString())){ edit_text1.setError("请输入内容"); //获取焦点--让用户可以直接输入---更加人性化 edit_text1.requestFocus(); return; }else if("".equals(edit_text2.getText().toString())){ edit_text2.setError("请输入内容"); //获取焦点--让用户可以直接输入---更加人性化 edit_text2.requestFocus(); return; }else if("".equals(edit_text3.getText().toString())){ edit_text3.setError("请输入内容"); //获取焦点--让用户可以直接输入---更加人性化 edit_text3.requestFocus(); return; }
Long macStart= Long.parseLong(edit_text1.getText().toString(),16); Long num1= Long.parseLong(edit_text2.getText().toString(),10); Long num2Long.parseLong(edit_text3.getText().toString(),10); //得出结果并打印 result.setTextSize(20); result.setTextColor(Color.BLACK); result.setText("0x" + Long.toHexString(macStart+num1*num2-1)); }
上面这个获取焦点的方法edit_text3.requestFocus();
我是从在这里找的:
http://zhidao.baidu.com/link?url=m2D0RHV22wibTR8c5oWgRCzgcQfwLcaoRkWo5CIxmIAa83ui8ZAsPdyL5KUXGjhTnWYU8Ji4D244m2NoGjI9z_
android中,要使控件获得焦点,需要先setFocus,再requestFocus。
以Button为例: btn.setFocusable(true);
btn.setFocusableInTouchMode(true);
然后获取焦点: btn.requestFocus();
btn.requestFocusFromTouch();
因为系统默认EditText就是Focusable-true、FocusableInTouchMode-true,
所以我在
//获取焦点--让用户可以直接输入---更加人性化 edit_text1.requestFocus();
直接申请获取焦点,结果获取成功,Ok。