Как отобразить пользовательскую клавиатуру при нажатии на edittext в android
У меня есть пользовательская клавиатура в моем приложении. вопрос в том, как didplay эту клавиатуру при нажатии на edittext.Я использую прослушиватель setonfocuschangre, теперь при изменении фокуса edittext появляется keyboaed custon.но я хочу показать эту клавиатуру всякий раз, когда я нажимаю на edittext..одна информация, которую я забыл поместить здесь, edittext находится внутри фрагмента.
4 ответов
Я создал пользовательскую клавиатуру в своем приложении с помощью тега клавиатуры. Я добавляю эту клавиатуру в RelativeLayout на моем экране, как.
private void createCustomKeyboard() {
Keyboard customKeyboard = new Keyboard(getActivity(), R.layout.keyboard);
CustomKeyboard mCustomKeyboard = new CustomKeyboard(getActivity(), this);
mCustomKeyboard.setKeyboard(customKeyboard);
RelativeLayout relLayKeyboard.addView(mCustomKeyboard);
}
Если вы хотите использовать эту CustomKeyboard на одном или нескольких EditText, то вы должны использовать ниже код:
EditText edtxtName = (EditText) v.findViewById(R.id.edtName);
RelativeLayout relLayKeyboard = (RelativeLayout)findViewById(R.id.relLay_keyboard);
edtxtName.setOnTouchListener(exitSoftKeyBoard);
private final OnTouchListener exitSoftKeyBoard = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
InputMethodManager imm = (InputMethodManager) getActivity().getApplicationContext().getSystemService(
android.content.Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
if(v.equals(edtxtName)){
edtxtName.requestFocus();
relLayKeyboard.setVisibility(View.VISIBLE);
}
return true;
}
};
вы можете попробовать что-то вроде этого
edittext.setOnClickListener(new OnClickListener() {
// NOTE By setting the on click listener, we can show the custom keyboard again,
// by tapping on an edit box that already had focus (but that had the keyboard hidden).
@Override public void onClick(View v) {
showCustomKeyboard(v);
}
});
// Disable standard keyboard hard way
// NOTE There is also an easy way: 'edittext.setInputType(InputType.TYPE_NULL)'
// (but you will not have a cursor, and no 'edittext.setCursorVisible(true)' doesn't work )
edittext.setOnTouchListener(new OnTouchListener() {
@Override public boolean onTouch(View v, MotionEvent event) {
EditText edittext = (EditText) v;
int inType = edittext.getInputType(); // Backup the input type
edittext.setInputType(InputType.TYPE_NULL); // Disable standard keyboard
edittext.onTouchEvent(event); // Call native handler
edittext.setInputType(inType); // Restore input type
return true; // Consume touch event
}
});
// Disable spell check (hex strings look like words to Android)
edittext.setInputType(edittext.getInputType() | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
более подробная информация здесь
использовать getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
чтобы отключить клавиатуру по умолчанию, а затем установить прослушиватель щелчка, чтобы показать свою собственную клавиатуру
использовать onClickListener
следующее:
edit_text.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
custom_keyboard.open();
}
});
или вы можете сделать это:
edit_text.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus)
custom_keyboard.open();
else
custom_keyboard.close();
}
});