Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- @Override
- public void onGlobalLayout()
- {
- Log.debug("VK: onGlobalLayout " + bKeyboardShowing);
- //String fullStackTrace = org.apache.commons.lang.exception.ExceptionUtils.getFullStackTrace(e);
- String fullStackTrace = buildStackTraceString(Thread.currentThread().getStackTrace());
- Log.debug("VK: stack: " + fullStackTrace);
- if( bKeyboardShowing )
- {
- Rect visibleRect = new Rect();
- View visibleView = mainView.getRootView();
- visibleView.getWindowVisibleDisplayFrame( visibleRect );
- mainDecorView.getDrawingRect( mainDecorViewRect );
- Log.debug("VK: onGlobalLayout visibleRect:(" + visibleRect.left + ", " + visibleRect.top +", " + visibleRect.right +", " + visibleRect.bottom +")"+
- ", mainDecorViewRect:" + mainDecorViewRect.left + ", " + mainDecorViewRect.top +", " + mainDecorViewRect.right +", " + mainDecorViewRect.bottom + ")" );
- // determine which side of the screen the keyboard is covering
- int leftDiff = Math.abs( mainDecorViewRect.left - visibleRect.left );
- int topDiff = Math.abs( mainDecorViewRect.top - visibleRect.top );
- int rightDiff = Math.abs( mainDecorViewRect.right - visibleRect.right );
- int bottomDiff = Math.abs( mainDecorViewRect.bottom - visibleRect.bottom );
- // Rect covered by the virtual keyboard
- Rect keyboardRect = new Rect();
- keyboardRect.left = ( rightDiff > 0 ) ? visibleRect.right : mainDecorViewRect.left; // keyboard is on the right
- keyboardRect.top = ( bottomDiff > 0 ) ? visibleRect.bottom : mainDecorViewRect.top; // keyboard is on the bottom
- keyboardRect.right = ( leftDiff > 0 ) ? visibleRect.left : mainDecorViewRect.right; // keyboard is on the left
- keyboardRect.bottom = ( topDiff > 0 ) ? visibleRect.top : mainDecorViewRect.bottom; // keyboard is on the top
- //keyboard Y coord
- int keyboardYPos = visibleRect.bottom - newVirtualKeyboardInput.getHeight();
- //avoid negative coords if the keyboard is shown on top of the screen
- if(keyboardYPos < 0)
- keyboardYPos = visibleRect.top + newVirtualKeyboardInput.getHeight();
- int visibleScreenYOffset = Math.max(bottomDiff, topDiff);
- nativeVirtualKeyboardShown( keyboardRect.left, keyboardRect.top, keyboardRect.right, keyboardRect.bottom );
- Log.debug("VK: show?" + visibleScreenYOffset + "," + newVirtualKeyboardInput.getY());
- if(visibleScreenYOffset > 200)
- {
- Log.debug("VK: show");
- //newVirtualKeyboardInput.setBackgroundColor(Color.WHITE);
- //newVirtualKeyboardInput.setCursorVisible(true);
- newVirtualKeyboardInput.setY(keyboardYPos);
- newVirtualKeyboardInput.setVisibility(View.VISIBLE);
- newVirtualKeyboardInput.requestFocus();
- bNeedShowKeyboard = false;
- }
- else if(newVirtualKeyboardInput.getY() > 0)
- {
- Log.debug("VK: hide");
- newVirtualKeyboardInput.setVisibility(View.GONE);
- //set offscreen
- newVirtualKeyboardInput.setY(-1000);
- }
- else if( bNeedShowKeyboard )
- {
- Log.debug("VK: request");
- mainView.requestLayout();
- }
- // else
- // {
- // Log.debug("VK: show");
- // //newVirtualKeyboardInput.setBackgroundColor(Color.WHITE);
- // //newVirtualKeyboardInput.setCursorVisible(true);
- // newVirtualKeyboardInput.setY(keyboardYPos);
- // newVirtualKeyboardInput.setVisibility(View.VISIBLE);
- // newVirtualKeyboardInput.requestFocus();
- // }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement