Как отобразить пользовательскую клавиатуру при нажатии на 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();
        }
    });