android 输入法横屏下禁止全屏&调整横屏模式下键盘高度

14 篇文章 0 订阅

转载自:http://cache.baiducontent.com/c?m=9d78d513d99e1db8599dc33a5e4890355f0397624c83974b2195c208c43307564616bce671750443939b733d47e90b4beb832b6f6e587ce2c59bcd48daac925f7fd67a61671cf14216d20eafbc17789e3dc004b4fa04a6fca374c8ffcfd4d45059cb52067c80f2885a0316ca6cf2123ae4a29a491042&p=c37f8416d9c111a058ed9635425698&newp=c97dc64ad49813f608e2947e0f0aa5231610db2151d6d3156b82c825d7331b001c3bbfb42325120ed1c17e6d05a94f5ceaf23c7433012ba3dda5c91d9fb4c57479d3756d&user=baidu&fm=sc&query=onEvaluateFullscreenMode&qid=fec166b900024597&p1=2

一、实现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
*****************************************************************************************************************************

android PinYinIME横屏模式禁止全屏输入  调整横屏模式下键盘高度 - ka布 - 1420café
图一

由上文可知,解决办法有二。一是直接修改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;
    }
*****************************************************************************************************************************

 第二个方法是,PinYinIME实例化出来的EditorInfo中,显式设置  IME_FLAG_NO_FULLSCREEN 标志。如下:
***************************************************************************************************************************** 
文件: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横屏模式禁止全屏输入  调整横屏模式下键盘高度 - ka布 - 1420café
 
图二



二、调整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;
效果如图三;配合字体大小、位置的调整,压扁后的键盘,会更好看,在此不作介绍。
android PinYinIME横屏模式禁止全屏输入  调整横屏模式下键盘高度 - ka布 - 1420café
图三


to the end...... 


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值