Welcome 微信登录

首页 / 操作系统 / Linux / 横屏Android的输入法避免全屏处理

Android输入法PinyinIME 或 Softkeyboard,在ORIENTATION_LANDSCAPE的机器上就会进入全屏模式,也就是文本框变大,除了文本框和什么都不显示了(其实可能也没有太多空间显示,不过如果是个大屏幕就难看的很了),要想解除全屏模式,需要参考如下的办法。其实修改很简单,代码路径:platform/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
749     /**750      * Re-evaluate whether the input method should be running in fullscreen751      * mode, and update its UI if this has changed since the last time it752      * was evaluated.  This will call {@link #onEvaluateFullscreenMode()} to753      * determine whether it should currently run in fullscreen mode.  You754      * can use {@link #isFullscreenMode()} to determine if the input method755      * is currently running in fullscreen mode.756      */757     public void updateFullscreenMode() {-- 758         boolean isFullscreen = mShowInputRequested && onEvaluateFullscreenMode();++ 758         boolean isFullscreen = false;759         boolean changed = mLastShowInputRequested != mShowInputRequested;760         if (mIsFullscreen != isFullscreen || !mFullscreenApplied) {761             changed = true;762             mIsFullscreen = isFullscreen;763             InputConnection ic = getCurrentInputConnection();764             if (ic != null) ic.reportFullscreenMode(isFullscreen);765             mFullscreenApplied = true;
834     /**835      * Override this to control when the input method should run in836      * fullscreen mode.  The default implementation runs in fullsceen only837     * when the screen is in landscape mode.  If you change what838      * this returns, you will need to call {@link #updateFullscreenMode()}839      * yourself whenever the returned value may have changed to have it840      * re-evaluated and applied.841      */842     public boolean onEvaluateFullscreenMode() {843         Configuration config = getResources().getConfiguration();844         if (config.orientation != Configuration.ORIENTATION_LANDSCAPE) {845             return false;846         }847         if (mInputEditorInfo != null848                 && (mInputEditorInfo.imeOptions & EditorInfo.IME_FLAG_NO_FULLSCREEN) != 0) {849             return false;850         }851         return true;852     }
ORIENTATION_LANDSCAPE模式就是所谓的横屏模式,参见Layout。只要LANDSCAPE就全屏,那必须是横屏又不能全屏的直接设置为false即可。