如何强制从编辑文本中失去焦点?

时间:2012-08-16 09:56:10

标签: android focus android-edittext

嗨我的屏幕上有两个编辑文本框。我只有在编辑文本获得焦点时才能启用横向支持。当用户在软键盘上按下完成按钮时禁用相同的功能。用户在第一个编辑文本中输入值,然后按下一个按钮。然后在第二个编辑文本中输入值并按“完成”按钮。我想要做的一件事就是需要从第二个edittext.i强制失去焦点已经尝试过clearFocus()和button.requestFocus()但下面没有帮助。以下是我的代码片段。

@Override
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
    if (actionId == EditorInfo.IME_ACTION_SEND
            || actionId == EditorInfo.IME_ACTION_DONE
            || actionId == EditorInfo.IME_ACTION_GO
            || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {

    ((Activity) context).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
     InputMethodManager imm = (InputMethodManager) context
               .getSystemService(Context.INPUT_METHOD_SERVICE);
     if (imm != null) 
     imm.hideSoftInputFromWindow(view.getWindowToken(), 0);

     return true;
    }
    return false;
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
    if(hasFocus)
    ((Activity) context).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}

如果用户单击第二个编辑文本,则单击“完成”按钮后控件不会进入onFocusChange事件。请帮帮我

2 个答案:

答案 0 :(得分:2)

按照This问题的接受回答。在OnEditorAction方法中完成处理后,只需将焦点设置为该虚拟布局

答案 1 :(得分:0)

如果我理解正确,你想在按下“完成”按钮时关闭键盘? 如果是,请尝试将此行添加到其onClickListener

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);