Phonegap - Android当软键盘可见时,如何在全屏模式下调整布局

Jor*_*ejo 5 android cordova phonegap-build

我正在为三星Galaxy Tab 3开发一个phonegap应用程序.当此应用程序处于全屏模式时,软键盘会隐藏文本输入字段,并且无法滚动页面以查看内容.我怎么能解决这个问题?

Jor*_*ejo 17

在这个网站上花了一天时间尝试几乎所有可能的解决方案之后,对我来说没有任 最后,我能够根据以下两个提出的解决方案找到解决方法:

/sf/answers/1364580451/

此链接显示了解决Android应用程序问题的解决方法; 但是我没有任何在android工作的经验,所以问题是:如何在Phonepap项目中包含这种代码的和平?

/sf/answers/1302728381/

这个链接特别建议一个解决方案,这对我来说不起作用,但更重要的是让我知道如何在phonegap项目中添加自定义安卓代码.

1-在phonegap项目中创建以下类(如第一个链接中所示):



    package com.test.android;

    import android.app.Activity;
    import android.graphics.Rect;
    import android.view.View;
    import android.view.ViewTreeObserver;
    import android.widget.FrameLayout;

    public class AndroidBug5497Workaround {
        // For more information, see https://code.google.com/p/android/issues/detail?id=5497
        // To use this class, simply invoke assistActivity() on an Activity that already has its content view set.

        public static void assistActivity (Activity activity) {
            new AndroidBug5497Workaround(activity);
        }

        private View mChildOfContent;
        private int usableHeightPrevious;
        private FrameLayout.LayoutParams frameLayoutParams;

        private AndroidBug5497Workaround(Activity activity) {
            FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);
            mChildOfContent = content.getChildAt(0);
            mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                public void onGlobalLayout() {
                    possiblyResizeChildOfContent();
                }
            });
            frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams();
        }

        private void possiblyResizeChildOfContent() {
            int usableHeightNow = computeUsableHeight();
            if (usableHeightNow != usableHeightPrevious) {
                int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight();
                int heightDifference = usableHeightSansKeyboard - usableHeightNow;
                if (heightDifference > (usableHeightSansKeyboard/4)) {
                    // keyboard probably just became visible
                    frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;
                } else {
                    // keyboard probably just became hidden
                    frameLayoutParams.height = usableHeightSansKeyboard;
                }
                mChildOfContent.requestLayout();
                usableHeightPrevious = usableHeightNow;
            }
        }

        private int computeUsableHeight() {
            Rect r = new Rect();
            mChildOfContent.getWindowVisibleDisplayFrame(r);
            return (r.bottom - r.top);
        }

}


这个类可以放在你项目的这个位置:(我无法在这个论坛中加载图像,我需要至少10个声望).在此网址中找到图片示例:

检查更清晰

2-每次创建phonegap项目时,都会得到一个名为your_project_name.java的类.在我的例子中,它是test1.java.编辑类并在方法onCreate:__CODE__model中添加以下句子


    AndroidBug5497Workaround.assistActivity(this);

 

最初的功劳归于Laravel Eager Loading - 仅加载特定列