我使用Keyboard标签在我的应用程序中创建了自定义键盘。 我在屏幕上的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); }
如果要在一个或多个EditText上使用此CustomKeyboard,则必须使用以下代码:
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(); } });