这是个扫码枪回车输入扫码内容的界面,常用于收银收款等场景
前期踩了很多坑,网上的资料也因为 android 历史版本不同有各种兼容问题,最后总结了下
在无霸屏设置的 android 设备上使用如下方案可有效避免界面弹出软键盘和显示顶部状态栏问题,环境为 android 7.1.2
屏蔽软键盘:自动聚焦 的 inputtype 设置为 none
隐藏顶部状态:方案一 hidestatusbar 必须在 setcontentview 之前,方案二在 styles 中设置 noactionbar 具体可自行搜索
- androidmanifest.xml
<activity
android:name=".myactivity"
android:windowsoftinputmode="statehidden"
android:exported="false" />- activity_my.xml
<edittext
android:id="@+id/scaninput"
android:layout_width="0dp"
android:layout_height="0dp"
android:focusable="true"
android:focusableintouchmode="true"
android:focusedbydefault="true"
android:importantforautofill="no"
android:inputtype="none" />- myactivity.kt
class myactivity : appcompatactivity() {
private lateinit var binding: activitymybinding
override fun oncreate(savedinstancestate: bundle?) {
super.oncreate(savedinstancestate)
binding = activitymybinding.inflate(layoutinflater)
hidestatusbar()
setcontentview(binding.root)
hidesoftkeyboard()
}
override fun onresume() {
super.onresume()
hidesoftkeyboard()
hideactionbar()
}
private fun hidesoftkeyboard() {
window.setsoftinputmode(windowmanager.layoutparams.soft_input_state_hidden)
this.currentfocus?.let { view ->
val imm = getsystemservice(context.input_method_service) as? inputmethodmanager
imm?.hidesoftinputfromwindow(view.windowtoken, inputmethodmanager.result_hidden)
}
}
private fun hidestatusbar() {
requestwindowfeature(window.feature_no_title);
window.setflags(
windowmanager.layoutparams.flag_fullscreen,
windowmanager.layoutparams.flag_fullscreen
)
}
private fun hideactionbar() {
window.decorview.systemuivisibility = view.system_ui_flag_fullscreen
actionbar?.hide()
}
}到此这篇关于android 扫码枪输入时屏蔽软键盘和顶部状态栏的文章就介绍到这了,更多相关android屏蔽软键盘和顶部状态栏内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论