[ https://issues.apache.org/jira/browse/CB-6289?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14387684#comment-14387684 ]
ASF GitHub Bot commented on CB-6289: ------------------------------------ Github user agrieve commented on a diff in the pull request: https://github.com/apache/cordova-plugins/pull/15#discussion_r27444435 --- Diff: keyboard/src/android/Keyboard.java --- @@ -0,0 +1,124 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +*/ +package org.apache.cordova.labs.keyboard; + +import org.apache.cordova.CallbackContext; +import org.apache.cordova.CordovaInterface; +import org.apache.cordova.CordovaPlugin; +import org.apache.cordova.CordovaWebView; +import org.apache.cordova.LOG; +import org.json.JSONArray; +import org.json.JSONException; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Rect; +import android.util.DisplayMetrics; +import android.view.View; +import android.view.ViewTreeObserver.OnGlobalLayoutListener; +import android.view.inputmethod.InputMethodManager; + +public class Keyboard extends CordovaPlugin { + /** + * Delta height of the visible area, to be treated as keyboard opening. + */ + private final static int MinHeghtDelta = 100; + private static final String TAG = "Keyboard"; + + public void initialize(CordovaInterface cordova, CordovaWebView webView) { + super.initialize(cordova, webView); + + Activity activity = cordova.getActivity(); + DisplayMetrics metrics = new DisplayMetrics(); + activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); + final float density = metrics.density; + + final CordovaWebView appView = webView; + + final View rootView = activity.getWindow().getDecorView().findViewById(android.R.id.content).getRootView(); + OnGlobalLayoutListener list = new OnGlobalLayoutListener() { + int previousHeightDifference = 0; + + @Override + public void onGlobalLayout() { + LOG.d(TAG, "Entering global layout notification"); + + Rect visibleRect = new Rect(); + //r will be populated with the coordinates of your view that area still visible. + rootView.getWindowVisibleDisplayFrame(visibleRect); + + int visibleHeight = visibleRect.bottom - visibleRect.top; + int viewHeight = rootView.getRootView().getHeight(); + int heightDifference = (int)((viewHeight - visibleHeight) / density); + if (heightDifference > MinHeghtDelta + && heightDifference != previousHeightDifference) { + // If the height of the view is bigger then + // visible area by delta, then assume that keyboard + // is shown on the screen. + appView.sendJavascript("Keyboard.isVisible = true; if (Keyboard.onshow) Keyboard.onshow();"); + } + else if (heightDifference != previousHeightDifference + && (previousHeightDifference - heightDifference) > MinHeghtDelta){ + // If the difference between visible and view area dropped by the delta + // then assume that this means that keyboard is hidden. + appView.sendJavascript("Keyboard.isVisible = false; if (Keyboard.onhide) Keyboard.onhide();"); --- End diff -- ugh, yeah, should be fixed up on iOS as well too I suppose. There's no reason to use a single callback rather than an event. Events are much more flexible / normal. > Keyboard for Android > -------------------- > > Key: CB-6289 > URL: https://issues.apache.org/jira/browse/CB-6289 > Project: Apache Cordova > Issue Type: Improvement > Components: Plugins > Environment: Android > Reporter: Andrey Kurdyumov > Assignee: Andrey Kurdyumov > Priority: Minor > Labels: keyboard-plugin > > Please extend the Keyboard plugin to support Android platform. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org