第一个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。
posted @ 2015-07-25 09:55  cuiz_book  阅读(721)  评论(0编辑  收藏  举报