Есть ли способ, когда мы фокусируемся на вводе, тогда он отображается над программной клавиатурой (WebView)? - PullRequest
0 голосов
/ 04 октября 2018

Я использую веб-сайт HTML для загрузки в WebView, но когда пользователь нажимает на TextBox, он скрывается под клавиатурой.так что будет предложением для этого?

1 Ответ

0 голосов
/ 04 октября 2018
  1. Staus Bar Present

    Если ваша деятельность не является полноэкранной, тогда вы можете использовать android:windowSoftInputMode="adjustResize" или android:windowSoftInputMode="adjustPan" в своем AndroidManifest.xml длядостигните этого.

  2. Для полноэкранного режима

    Первый метод не будет работать для полноэкранного режима.Поэтому для создания вручную необходимо создать служебный класс

    Создать общедоступный класс WindowResize.java

    public  class WindowResize{
       public static void assistActivity(Activity activity) {
        new WindowResize(activity);
       }
    
       private View mChildOfContent;
       private int usableHeightPrevious;
       private FrameLayout.LayoutParams frameLayoutParams;
    
       private WindowResize(final Activity activity) {
        FrameLayout content = activity.findViewById(android.R.id.content);
        mChildOfContent = content.getChildAt(0);
        mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            public void onGlobalLayout() {
                possiblyResizeChildOfContent(activity);
            }
        });
        frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams();
       }
    
      private void possiblyResizeChildOfContent(Activity activity) {
        //Visible height
        int usableHeightNow = computeUsableHeight();
        if (usableHeightNow != usableHeightPrevious) {
            //Total window size. We have to decrement the SoftNavigation button height from total height if there any
            int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight() - getNavigationButtonHeight(activity);
            int heightDifference = usableHeightSansKeyboard - usableHeightNow;
            if (heightDifference > (usableHeightSansKeyboard / 4)) {
                // keyboard  visible
                frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;
            } else {
                // keyboard  hidden
                frameLayoutParams.height = usableHeightSansKeyboard;
            }
            mChildOfContent.requestLayout();
            usableHeightPrevious = usableHeightNow;
          }
        }
    
      //Usable height in current window.
      private int computeUsableHeight() {
        Rect r = new Rect();
        mChildOfContent.getWindowVisibleDisplayFrame(r);
        return (r.bottom - r.top);
      }
    
      //SoftInput navigation buttons height.
      private int getNavigationButtonHeight(Activity activity) {
        // getRealMetrics is only available with API 17 and +
        DisplayMetrics metrics = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int usableHeight = metrics.heightPixels;
        activity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
        int realHeight = metrics.heightPixels;
        if (realHeight > usableHeight)
            return realHeight - usableHeight;
        else
            return 0;
    
      }
    }
    

добавить WindowResize.assistActivity(this); вОсновная деятельность, которая содержит соответствующий веб-просмотр.

...