我正在创建一个遥控器,让人们输入Minix安卓加密狗的角色。通过平板电脑或智能手机上的其他应用程序,人们可以输入发送到加密狗的数据以供输入。
当我按下按钮时,我尝试以编程方式创建键盘,我可以使用该按钮获取键盘输入的按键。当我点击ANYTHING ELSE然后键盘时,我还必须删除键盘。这是重要的部分,因为我使用片段并且屏幕上还有其他视图,当按下时,还必须移除键盘。
那么我怎么知道键盘上没有手机/平板电脑的触摸输入?我已经尝试了onfocusChanged,但是这并没有奏效,因为如果我在屏幕上按某些内容,我的焦点就不会改变。
目前我正在使用此代码,当我按下按钮并拦截键盘上输入的所有文字时,我可以显示键盘。
mKeyboard = (Button) view.findViewById(R.id.buttonKeyboard);
mKeyboard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final EditText plainTextInput = (EditText) view.findViewById(R.id.PlainTextInput);
plainTextInput.requestFocus();
InputMethodManager keyboard = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.showSoftInput(plainTextInput, 0);
plainTextInput.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.e(TAG, s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
plainTextInput.getLayout();
}
});
现在我如何知道用户何时按下键盘外的某个位置,这样我可以关闭键盘?或者是否有其他方法可以在没有隐形edittexts的情况下添加键盘?