深圳全飞鸿
标题:
关于Android的软键盘
[打印本页]
作者:
syant
时间:
2024-8-18 20:02
标题:
关于Android的软键盘
关于Android的软键盘
webview环境下验证:
验证一:这个方法可以关闭软件盘,但是硬件键盘也失效了
android:focusable="false"
android:focusableInTouchMode="false"
验证二:这个无效
android:inputType="text"
作者:
syant
时间:
2024-9-5 08:37
实际测试:
用getRootView或用webView都可以关掉软键盘, 缺点是下次扫描,软键盘还是会出来
public void hideSoftKeyboard(){
/*View view = getCurrentFocus();
if (view != null) {
// 隐藏软键盘
String name = view.getClass().toString();
ToastUtils.showLongToast(context,name);
}*/
/* View view = getWindow().getDecorView().getRootView();
InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}*/
//
InputMethodManager imm2 = (InputMethodManager) webView.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm2 != null) {
imm2.hideSoftInputFromWindow(webView.getWindowToken(), 0);
}
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
复制代码
作者:
syant
时间:
2024-9-8 09:55
一、主界面
<activity
android
:name
="com.nagomes.pda.allparts.HomeActivity"
android
:windowSoftInputMode
="stateAlwaysHidden"
>
二、加载
protected void
onCreate
(Bundle savedInstanceState) {
setTitle(
false
)
;
//
设置是否显示标题栏
setState(
false
)
;
//
设置是否显示状态栏
getWindow().addFlags(WindowManager.LayoutParams.
FLAG_ALT_FOCUSABLE_IM
)
;
super
.onCreate(savedInstanceState)
;
}
三、动态
if
(message.equals(
"::S0JPTg=="
)) {
Log.
d
(
TAG
,
"
软键盘打开
"
)
;
ToastUtils.
showLongToast
(
context
,
"
软键盘打开
!"
)
;
getWindow().clearFlags(WindowManager.LayoutParams.
FLAG_ALT_FOCUSABLE_IM
)
;
result.confirm()
;
return true;
}
if
(message.equals(
"::S0JPRkY="
)) {
Log.
d
(
TAG
,
"
软键盘关闭
"
)
;
ToastUtils.
showLongToast
(
context
,
"
软键盘关闭
!"
)
;
getWindow().addFlags(WindowManager.LayoutParams.
FLAG_ALT_FOCUSABLE_IM
)
;
result.confirm()
;
return true;
}
作者:
syant
时间:
2024-9-8 10:20
Q&A
Q:扫码枪扫码后,自动调起系统软键盘
A:扫码枪相当于外接键盘,对于外接键盘不同的Android设备表现不同,一般我们期望外接键盘与系统键盘互斥。看厂商是否在Framework有做过适配处理。若要不弹出系统软键盘,可禁用Activity软键盘:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
1
解除禁用:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
1
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"/>
作者:
syant
时间:
2024-9-8 10:25
EditText始终不弹出软件键盘
EditText edit=(EditText)findViewById(R.id.edit);
edit.setInputType(InputType.TYPE_NULL);
欢迎光临 深圳全飞鸿 (http://www.nagomes.com/disc/)
Powered by Discuz! X3.2