如何在自定义视图上显示数字键盘

wiz*_*lee 5 keyboard android android-custom-view

我创建了一个自定义视图:

public class MyCustomView extends LinearLayout {...}
Run Code Online (Sandbox Code Playgroud)

当用户触摸它时,我将显示如下键盘:

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            requestFocus();
            showKeyboard(true);
        }
        return super.onTouchEvent(event);
    }
    public void showKeyboard(boolean show) {
        InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        if (show) {
          imm.showSoftInput(this, InputMethodManager.SHOW_FORCED);
        } else {
          imm.hideSoftInputFromWindow(getWindowToken(), 0);
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,如何显示数字键盘,哪个用户只能输入数字,就像EditText一样?

mEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
mEditText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
Run Code Online (Sandbox Code Playgroud)

Gir*_*hai 0

尝试添加

 EditText mEditText = new EditText(mContext);
 mEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
Run Code Online (Sandbox Code Playgroud)

并改变

imm.showSoftInput(this, InputMethodManager.SHOW_FORCED);
Run Code Online (Sandbox Code Playgroud)

imm.showSoftInput(mEditText, InputMethodManager.SHOW_FORCED);
Run Code Online (Sandbox Code Playgroud)

即重写你的代码为

if (show) {
    EditText mEditText = new EditText(mContext);
    mEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
    imm.showSoftInput(mEditText, InputMethodManager.SHOW_FORCED);
}
Run Code Online (Sandbox Code Playgroud)

替换mContext是您的活动上下文。