如何禁用默认键盘在 android oreo 8.0 中出现和显示光标?
How to disable default keyboard from appearing and showing cursor in android oreo 8.0 ?
我正在开发一个应用程序,我已经显示了自定义键盘,
我需要禁用 android 默认键盘的显示,并且当我们单击该编辑文本时也应显示光标。
我已点击以下链接(已选择的答案),但它们不适用于 android 8.0
该代码用于隐藏键盘而不显示光标。
Android Edit Text Cursor Doesn't Appear
Android: Disable soft keyboard at all EditTexts
有谁知道解决办法吗
我得到了上述问题的解决方案。
我已经实现了我的自定义键盘(使用数字查看)以仅在 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
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" />
我正在开发一个应用程序,我已经显示了自定义键盘, 我需要禁用 android 默认键盘的显示,并且当我们单击该编辑文本时也应显示光标。
我已点击以下链接(已选择的答案),但它们不适用于 android 8.0
该代码用于隐藏键盘而不显示光标。
Android Edit Text Cursor Doesn't Appear
Android: Disable soft keyboard at all EditTexts
有谁知道解决办法吗
我得到了上述问题的解决方案。
我已经实现了我的自定义键盘(使用数字查看)以仅在 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
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" />