Android2.2的Phone界面会有软键盘弹出!
原因是
mDigits.setKeyListener(DialerKeyListener.getInstance());
mDigits.setInputType(InputType.TYPE_CLASS_PHONE);
把这两行去掉并加上一句mDigits.setInputType(InputType.TYPE_NULL);就行了!
Phone那个拨号界面对应的是Contacts下的TwelveKeyDialer.java
本身采用的是
playTone(ToneGenerator.TONE_DTMF_1);//生音是否显示
keyPressed(KeyEvent.KEYCODE_1);//输入的数字
mHaptic.vibrate();//震动
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);
mDigits.onKeyDown(keyCode, event);//keycode对应的就是KeyEvent.KEYCODE_1
keyCode对应的去取对应的值!这个值对应的在MultiTapKeyListener.java中有定义!
static {
sRecs.put(KeyEvent.KEYCODE_1, ".,1!@#$%^&*:/?'=()");
sRecs.put(KeyEvent.KEYCODE_2, "abc2ABC");
sRecs.put(KeyEvent.KEYCODE_3, "def3DEF");
sRecs.put(KeyEvent.KEYCODE_4, "ghi4GHI");
sRecs.put(KeyEvent.KEYCODE_5, "jkl5JKL");
sRecs.put(KeyEvent.KEYCODE_6, "mno6MNO");
sRecs.put(KeyEvent.KEYCODE_7, "pqrs7PQRS");
sRecs.put(KeyEvent.KEYCODE_8, "tuv8TUV");
sRecs.put(KeyEvent.KEYCODE_9, "wxyz9WXYZ");
sRecs.put(KeyEvent.KEYCODE_0, "0+");
sRecs.put(KeyEvent.KEYCODE_POUND, " ");
};
根据这个MultiTapKeyListener.java的注释
/**
* This is the standard key listener for alphabetic input on 12-key
* keyboards. You should generally not need to instantiate this yourself;
* TextKeyListener will do it for you.
*/
说明实际是由TextKeyListener.java来控制的!
@Override
public boolean onKeyDown(View view, Editable content,
int keyCode, KeyEvent event) {
KeyListener im = getKeyListener(event);
return im.onKeyDown(view, content, keyCode, event);
}
KeyListener 接口对应的返回实例在这里类型有两种!
private KeyListener getKeyListener(KeyEvent event) {
KeyCharacterMap kmap = KeyCharacterMap.load(event.getKeyboardDevice());
int kind = kmap.getKeyboardType();
if (kind == KeyCharacterMap.ALPHA) {
return QwertyKeyListener.getInstance(mAutoText, mAutoCap);
} else if (kind == KeyCharacterMap.NUMERIC) {
return MultiTapKeyListener.getInstance(mAutoText, mAutoCap);
}
return NullKeyListener.getInstance();
}
/**
* Returns {@link #NUMERIC}, {@link #PREDICTIVE} or {@link #ALPHA}.
*/
public int getKeyboardType()
{
return getKeyboardType_native(mPointer);
}
private static native int getKeyboardType_native(int ptr);返回NUMERIC数值类型或ALPHA希腊字母类型或PREDICTIVE这个返回的实际就是空的类型.
最后这个值是怎么取出来的列!已返回QwertyKeyListener.getInstance(mAutoText, mAutoCap);为例。
在QwertyKeyListener的onKeyDown方法中的
int i = event.getUnicodeChar(getMetaState(content));
public int getUnicodeChar(int meta) {
return KeyCharacterMap.load(mDeviceId).get(mKeyCode, meta);
}
private static native char get_native(int ptr, int keycode,
int meta);
键布局映射文件通常放在/system/usr/keylayout和/data/usr/keylayout
对于每一个键盘设备xxx,设置系统属性android.keylayout.xxx,如果没有为自己的硬件设备创建一个特定的设备,Android将去读/system/usr/keylayout/qwerty.kl这个配置文件。
key 399 GRAVE
key 2 1
key 3 2
key 4 3
key 5 4
key 6 5
key 7 6
key 8 7
key 9 8
key 10 9
key 11 0
key 158 BACK WAKE_DROPPED
key 230 SOFT_RIGHT WAKE
key 60 SOFT_RIGHT WAKE
key 107 ENDCALL WAKE_DROPPED
key 62 ENDCALL WAKE_DROPPED
key 229 MENU WAKE_DROPPED
key 139 MENU WAKE_DROPPED
key 59 MENU WAKE_DROPPED
key 127 SEARCH WAKE_DROPPED
key 217 SEARCH WAKE_DROPPED
key 228 POUND
key 227 STAR
key 231 CALL WAKE_DROPPED
key 61 CALL WAKE_DROPPED
key 232 DPAD_CENTER WAKE_DROPPED
key 108 DPAD_DOWN WAKE_DROPPED
key 103 DPAD_UP WAKE_DROPPED
key 102 HOME WAKE
key 105 DPAD_LEFT WAKE_DROPPED
key 106 DPAD_RIGHT WAKE_DROPPED
key 115 VOLUME_UP
key 114 VOLUME_DOWN
key 116 POWER WAKE
key 212 CAMERA
key 16 Q
key 17 W
key 18 E
key 19 R
key 20 T
key 21 Y
key 22 U
key 23 I
key 24 O
key 25 P
key 26 LEFT_BRACKET
key 27 RIGHT_BRACKET
key 43 BACKSLASH
key 30 A
key 31 S
key 32 D
key 33 F
key 34 G
key 35 H
key 36 J
key 37 K
key 38 L
key 39 SEMICOLON
key 40 APOSTROPHE
key 14 DEL
key 44 Z
key 45 X
key 46 C
key 47 V
key 48 B
key 49 N
key 50 M
key 51 COMMA
key 52 PERIOD
key 53 SLASH
key 28 ENTER
key 56 ALT_LEFT
key 100 ALT_RIGHT
key 42 SHIFT_LEFT
key 54 SHIFT_RIGHT
key 15 TAB
key 57 SPACE
key 150 EXPLORER
key 155 ENVELOPE
key 12 MINUS
key 13 EQUALS
key 215 AT
分享到:
相关推荐
首先,理解Android软键盘的工作原理。软键盘是通过系统的InputMethodService服务实现的,它是一个抽象的服务类,用于创建自定义输入法。然而,系统默认的软键盘并不允许开发者直接在其上添加自定义元素。为了实现在...
综上所述,监听Android软键盘状态可以通过比较布局高度变化或观察`WindowInsets`来实现。开发者应根据实际需求选择合适的方法,并注意性能优化。以上代码示例仅供参考,实际使用时需根据项目具体情况进行调整。
Android 软键盘调整界面问题解决方案 Android 软键盘的问题是 Android 开发中常见的问题之一。...通过了解软键盘的状态和调整方法,可以更好地解决软键盘相关问题,提高 Android 应用程序的用户体验。
在开发时遇到一个问题,需要对软...但是由于android不直接提供对软键盘打开与关闭操作的监听器,所以必须自己来写一个关于软键盘打开/关闭的监听器。 原理是通过对OnGlobalLayoutListener()来实现对软键盘的状态监听器
Unity3D android 拉起android软键盘 最近公司项目有一个手机VR展厅业务,用U3D做VR场景还可以做到,后面要加个2D的线下预定页面,就涉及到3D 2D界面转换,首先考虑u3d作为插件,不考虑升级客户端,更新U3D资源来升级...
首先,我们需要理解Android软键盘对布局的影响。当用户点击输入框时,软键盘通常会覆盖屏幕底部的部分内容,这可能会遮挡聊天窗口的输入框或发送按钮。为了解决这个问题,Android提供了几种处理策略。 1. **调整...
本文将深入探讨如何在Android软键盘上实现焦点移动,并支持上下左右按键以及回车键输入,以拉丁IME(LatinIME)输入法为例。 首先,焦点移动的关键在于监听和处理键盘事件。为了实现在软键盘上移动焦点,需要重写`...
在Android开发中,有时我们需要检测应用中的软键盘是否弹出,以便进行相应的界面调整或功能控制。例如,当用户打开虚拟键盘时,我们可能需要自动调整输入框的位置,或者在键盘隐藏时恢复原来的布局。标题“Android...
综上所述,这个压缩包提供了关于Android软键盘与EditText交互的解决方案,包括如何控制键盘显示、布局调整、工具类库的使用等,对于优化用户体验具有重要的实践意义。开发者可以参考这些内容,根据自己的应用需求...
另一种选择是`android:windowSoftInputMode="adjustResize"`,它会让整个布局缩小,以便为软键盘腾出空间,但可能会导致部分布局被键盘遮挡。 2. **自定义布局**: 创建一个自定义的全屏布局,监听键盘的显示与...
本DEMO——"android软键盘状态判断DEMO"提供了一个解决方案,它能判断软键盘的显示状态,并且对外提供了一个状态改变的接口,使得开发者可以方便地监听到软键盘的动态变化。 首先,软键盘状态的判断通常是通过观察...
监听Android软键盘弹出和收起事件(所有代码都是抽离自facebook/react-native源码中, 亲测有效, 放心食用)。回调事件方法参数包含键盘是否弹出(isShow)、键盘高度(keyboardHeight)、屏幕可用高度(screenHeight)、屏幕...
在Android应用开发中,经常会遇到一个问题,即当用户在输入框中输入时,弹出的软键盘会遮挡部分屏幕内容,尤其是对于登录或注册等需要填写多项信息的界面,这种情况严重影响了用户体验。为了解决这个问题,Android...
以下是对“Android软键盘学习资料”中涉及的知识点的详细解析: 1. **Android软键盘的显示与隐藏**: - 当用户在EditText输入时,系统会自动弹出软键盘。开发者可以通过`android:windowSoftInputMode`属性在...
总之,监听Android软键盘的返回键事件是一项实用的功能,能够帮助开发者更好地控制用户在应用中的交互流程。无论是通过InputMethodManager,还是通过观察ViewTreeObserver,或者是自定义键盘事件,都有其适用的场景...
然而,当软键盘弹出时,布局不会自动适应键盘的高度,因此可能导致下方元素被遮挡。 解决软键盘遮挡登录按钮的方法主要有以下几种: 1. 使用`android:windowSoftInputMode="adjustResize"`: 在AndroidManifest....
Android软键盘遮挡问题解决demo 在开发登录界面时,在点击某个EditText准备输入时,弹出的软键盘遮挡了按钮或者下面的输入框。在完成这个文本框的输入后,想要继续下面的操作,需要先隐藏软键盘。这会影响用户操作的...
通过重写`Activity`的`onWindowFocusChanged`方法,判断焦点变化是否与软键盘有关,然后结合`InputMethodManager`的`getInputMethodState()`等方法,分析按键事件。 ```java @Override public void ...
在Android开发中,当用户在应用中输入时,软键盘的弹出可能会遮挡底部的控件,导致用户体验下降。为了改善这种情况,开发者通常需要实现一个功能,使得底部的视图(如工具栏、按钮等)能够随着软键盘的弹出而上移。...
在Android开发中,有时我们需要监听软键盘的打开与关闭状态,比如在聊天界面或搜索框等场景下,以便做出相应的布局调整。虽然Android SDK并没有提供直接的API来监听软键盘的状态,但我们可以通过一些技巧来实现这个...