Как отключить отображение и отображение курсора по умолчанию в Android Oreo 8.0? - PullRequest
0 голосов
/ 08 мая 2018

Я разрабатываю одно приложение, и у меня отображается настраиваемая клавиатура, мне нужно отключить отображение клавиатуры по умолчанию для Android, а также при отображении текста редактирования должен отображаться курсор.

У меня есть ссылки ниже (выбранные ответы), но они не работают для Android 8.0

, этот код работает, чтобы скрыть отображение клавиатуры, но не показывает курсор.

Редактирование AndroidТекстовый курсор не отображается

Android: вообще отключить программную клавиатуру EditTexts

может кто-нибудь знает решение.

1 Ответ

0 голосов
/ 12 мая 2018

Я получил решение по вышеуказанному вопросу.

Я реализовал свою собственную клавиатуру (просмотр с номерами) для ввода цифр только в EditText.

Я использовал приведенную ниже функцию, установленную для каждого текста редактирования, который я использовал на экране.

fun disableSoftInputFromAppearing(editText: CustomEditText) {

    if (Build.VERSION.SDK_INT >= 26) {

        editText.setRawInputType(InputType.TYPE_NULL)
        editText.inputType = InputType.TYPE_CLASS_NUMBER
        editText.showSoftInputOnFocus = false
        editText.setOnClickListener {
            hideKeyboard()
        }

        try {               
            val f = TextView::class.java.getDeclaredField("mCursorDrawableRes")
            f.isAccessible = true
            f.set(editText, R.drawable.cursor)
        } catch (ignored: Exception) {
        }

    } else if (Build.VERSION.SDK_INT >= 24) {
        editText.inputType = InputType.TYPE_CLASS_NUMBER
        editText.showSoftInputOnFocus = false
        editText.setOnClickListener {
            hideKeyboard()
        }
        editText.setRawInputType(InputType.TYPE_CLASS_NUMBER)
        editText.setTextIsSelectable(true)
    } else {
        if (Build.VERSION.SDK_INT >= 21 ) {
            editText.showSoftInputOnFocus = false
        } else if (Build.VERSION.SDK_INT >= 11) {
            editText.setRawInputType(InputType.TYPE_CLASS_TEXT)
            editText.isCursorVisible = true
            editText.setTextIsSelectable(true)
        } else {
            editText.setRawInputType(InputType.TYPE_NULL)
            editText.isFocusable = true
        }

        try {
            val f = TextView::class.java.getDeclaredField("mCursorDrawableRes")
            f.isAccessible = true
            f.set(editText, R.drawable.cursor)
        } catch (ignored: Exception) {
            ignored.printStackTrace()
        }
    }
}

EditText в файле макета

<EditText
    android:layout_width="@dimen/_25sdp"
    android:layout_height="@dimen/_25sdp"
    android:cursorVisible="true"
    android:digits="0123456789"
    android:gravity="center"
    android:imeOptions="actionNext"
    android:longClickable="false"
    android:maxLength="1"
    android:singleLine="true"
    android:textColor="#000000"
    android:textSize="@dimen/_16sdp"
    tools:text="0" />
...