Android设备:外接扫码枪与系统软键盘问题
Q&A
Q:扫码枪扫码后,自动调起系统软键盘
A:扫码枪相当于外接键盘,对于外接键盘不同的Android设备表现不同,一般我们期望外接键盘与系统键盘互斥。看厂商是否在Framework有做过适配处理。若要不弹出系统软键盘,可禁用Activity软键盘:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
解除禁用:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
Q:扫码枪扫码后,自动弹出软键盘,同时EditText显示内容有丢失或代码监听扫码事件,监听到的KeyEvent.getKeyCode是KeyEvent.KEYCODE_ENTER
A:由于扫码枪与系统软键盘冲突,部分数据被系统软键盘拦截,禁用可解决此问题。
Q:扫码枪扫码后,EditText失去焦点
A:扫到的码最后一般带有回车符,导致EditText失去焦点。可给EditText配置如下next系列属性,使其下个焦点仍然指向自己:
<EditText
android:id="@+id/edit_scan_code"
android:layout_width="800px"
android:layout_height="200px"
android:textSize="50px"
android:nextFocusDown="@id/edit_scan_code"
android:nextFocusForward="@id/edit_scan_code"
android:nextFocusLeft="@id/edit_scan_code"
android:nextFocusRight="@id/edit_scan_code"
android:nextFocusUp="@id/edit_scan_code"
android:nextClusterForward="@id/edit_scan_code"/>