打开数字小键盘android没有edittext

时间:2015-12-25 12:02:07

标签: android android-edittext android-softkeyboard

我想在整个布局中打开数字键盘而不需要edittext。 到目前为止,我能够显示键盘。但我无法将类型更改为数字键盘。

这是现在正在使用的代码,但我想将键盘切换到数字小键盘。

requestFocus();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            inputMethodManager.showSoftInput(context, InputMethodManager.SHOW_IMPLICIT);
        }
    }, 300);

这是一个视图,我请求焦点然后点击它我想要显示数字小键盘。

2 个答案:

答案 0 :(得分:0)

将editText的backGround设置为透明。

           <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:inputType="textMultiLine"
            android:layout_margin="10dp"
            android:background="@color/transparent"/>

以编程方式设置输入类型。

editText.setRawInputType(2);

答案 1 :(得分:0)

与Tushar的答案非常相似,我建议执行以下操作。

在布局中添加一个很小的EditText,使其不可见。 请注意,我将EditText放置在ConstraintLayout中。

    <EditText
        android:id="@+id/myEditText"
        android:layout_width="0.1dp"
        android:layout_height="0dp"
        android:inputType="number"
        android:cursorVisible="false"
        android:background="@android:color/transparent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"/>

我使用Kotlin创建了一个扩展程序来显示键盘。

ViewExtensions.kt

import android.content.Context
import android.view.View
import android.view.inputmethod.InputMethodManager


fun View.showKeyboard() {
    val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
}

然后,当我想显示键盘时,请执行以下操作。

myEditText.requestFocus()
myEditText.showKeyboard()

如果您使用的是Java,则只需将EditText传递到showSoftInput()方法中。

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(myEditText, InputMethodManager.SHOW_IMPLICIT);

然后,如果您使用的是ButterKnife,则可以使用这样的听众观察文本。

@OnTextChanged(R.id.myEditText)
fun textChanged(text: CharSequence) {
    //Add code here
}

如果您不使用ButterKnife,则只需使用 myEditText.addTextChangedListener(...)