(问题)android PinYinIME横屏模式禁止全屏输入 & 调整横屏模式下键盘高度
来源:互联网 发布:武汉凝聚网络汉口北 编辑:程序博客网 时间:2024/06/07 21:24
一、实现android横屏模式下,禁止原生输入法PinYinIME全屏输入模式。
使用PinYinIME时,往往会遇到以下情景,文本框设定了不显示抽取框的参数(可理解为不允许输入法全屏);而输入法经过frameworks inputmethodservice后,跑了全屏显示的流程(见以下代码),导致图一所示看不到候选字的尴尬场面。
*****************************************************************************************************************************
文件:android/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
public boolean onEvaluateFullscreenMode() { Configuration config = getResources().getConfiguration(); if (config.orientation != Configuration.ORIENTATION_LANDSCAPE) { return false; } if (mInputEditorInfo != null && (mInputEditorInfo.imeOptions & EditorInfo.IME_FLAG_NO_FULLSCREEN) != 0) { return false; } return true; }
第一个if判断当前是否为全屏;第二个if主要判断输入法选项中是否设置了IME_FLAG_NO_FULLSCREEN。
*****************************************************************************************************************************
图一
由上文可知,解决办法有二。一是直接修改InputMethodService.java的方法onEvaluateFullscreenMode,直接返回false,如下:
*****************************************************************************************************************************
文件:android/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
public boolean onEvaluateFullscreenMode() { Configuration config = getResources().getConfiguration(); if (config.orientation != Configuration.ORIENTATION_LANDSCAPE) { return false; } if (mInputEditorInfo != null && (mInputEditorInfo.imeOptions & EditorInfo.IME_FLAG_NO_FULLSCREEN) != 0) { return false; } //return true; return false; }
*****************************************************************************************************************************
*****************************************************************************************************************************
to the end......
文件:android/packages/inputmethods/PinyinIME/src/com/android/inputmethod/pinyin/InputModeSwitcher.java
public int requestInputWithHkb(EditorInfo editorInfo) { ...... mEditorInfo = editorInfo; mEditorInfo.imeOptions |= EditorInfo.IME_FLAG_NO_FULLSCREEN; saveInputMode(newInputMode); prepareToggleStates(false); return mInputIcon; }
*****************************************************************************************************************************
上述两种处理方法,均可达到图二的效果。方法一将影响整合系统,所有输入法应用程序在横屏模式下都会被禁止全屏,故建议采用方法二处理。
图二
二、调整android横屏模式下PinYinIME键盘显示的高度。
文件:android/packages/inputmethods/PinyinIME/src/com/android/inputmethod/pinyin/Environment.java
将KEY_HEIGHT_RATIO_LANDSCAPE修改成你想要的数值,如:
private static final float KEY_HEIGHT_RATIO_LANDSCAPE = 0.100f;
效果如图三;配合字体大小、位置的调整,压扁后的键盘,会更好看,在此不作介绍。
图三
阅读全文
0 0
- (问题)android PinYinIME横屏模式禁止全屏输入 & 调整横屏模式下键盘高度
- android PinYinIME横屏模式禁止全屏输入 & 调整横屏模式下键盘高度
- android PinYinIME横屏模式禁止全屏输入 & 调整横屏模式下键盘高度
- android PinYinIME横屏模式禁止全屏输入 & 调整横屏模式下键盘高度
- android PinYinIME横屏模式下禁止全屏输入和调整键盘高度
- android Landscape模式下,禁止输入键盘全屏显示
- 解决Android webview 全屏模式下键盘遮挡输入框问题
- Android PinyinIME - 修改键盘高度
- Android在全屏状态下键盘覆盖输入框问题
- 问题记录 横屏模式输入法全屏遮挡问题处理
- XP下解决暗黑2全屏模式花屏问题
- android 全屏模式下软键盘弹出问题
- 获取键盘高度,调整输入框位置
- android输入框取消横屏全屏输入
- Android WebView 全屏下 输入框被键盘遮挡 问题解决
- Android中EditText控件横屏全屏模式时的控制
- iOS横屏获取键盘高度为0、键盘侧面弹出问题
- android设置全屏模式
- JSONP跨域
- C#基础-046 冒泡排序和选择排序算法
- 关于SQL Server中修改“用户自定义表类型”的问题
- splunk 服务器 +windows&linux forwarder 安装
- PAT 乙级练习题1012. 数字分类 (20)
- (问题)android PinYinIME横屏模式禁止全屏输入 & 调整横屏模式下键盘高度
- NMS-----非极大抑制
- XMC4300 Relax EtherCAT 套件面向EtherCAT从站应用
- 手把手教学 Android用jsoup解析html
- java web常用功能
- AI与游戏——引言
- Web前端高级工程师
- myeclipse10用本地文件来配jsEclipse等插件(附jsEclipse下载地址)
- web 前端Icon图标网站