android自定义键盘显示不出来,如何在android中单击edittext时显示自定义键盘

我使用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(); } });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值