|
@@ -1,92 +0,0 @@
|
|
-/*
|
|
|
|
- * Copyright 2015 Mike Penz All rights reserved.
|
|
|
|
- *
|
|
|
|
- * Licensed 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 com.nextcloud.talk.utils;
|
|
|
|
-
|
|
|
|
-import android.app.Activity;
|
|
|
|
-import android.graphics.Rect;
|
|
|
|
-import android.view.View;
|
|
|
|
-import android.view.ViewTreeObserver;
|
|
|
|
-import android.view.inputmethod.InputMethodManager;
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * Created by mikepenz on 14.03.15.
|
|
|
|
- * This class implements a hack to change the layout padding on bottom if the keyboard is shown
|
|
|
|
- * to allow long lists with editTextViews
|
|
|
|
- * Basic idea for this solution found here: http://stackoverflow.com/a/9108219/325479
|
|
|
|
- */
|
|
|
|
-public class KeyboardUtils {
|
|
|
|
- private View decorView;
|
|
|
|
- private View contentView;
|
|
|
|
- private boolean isUsedInBottomSheet;
|
|
|
|
- //a small helper to allow showing the editText focus
|
|
|
|
- ViewTreeObserver.OnGlobalLayoutListener onGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
|
|
|
|
- @Override
|
|
|
|
- public void onGlobalLayout() {
|
|
|
|
- Rect r = new Rect();
|
|
|
|
- //r will be populated with the coordinates of your view that area still visible.
|
|
|
|
- decorView.getWindowVisibleDisplayFrame(r);
|
|
|
|
-
|
|
|
|
- //get screen height and calculate the difference with the useable area from the r
|
|
|
|
- int height = decorView.getContext().getResources().getDisplayMetrics().heightPixels;
|
|
|
|
-
|
|
|
|
- int diff = height - r.bottom;
|
|
|
|
-
|
|
|
|
- boolean shouldSetBottomPadding = (isUsedInBottomSheet && diff != 0) || (diff > 0);
|
|
|
|
-
|
|
|
|
- if (shouldSetBottomPadding) {
|
|
|
|
- if (contentView.getPaddingBottom() != diff) {
|
|
|
|
- //set the padding of the contentView for the keyboard
|
|
|
|
- contentView.setPadding(0, 0, 0, diff);
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- //check if the padding is != initialBottomPadding (if yes reset the padding)
|
|
|
|
- if (contentView.getPaddingBottom() != 0) {
|
|
|
|
- //reset the padding of the contentView
|
|
|
|
- contentView.setPadding(0, 0, 0, 0);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- public KeyboardUtils(Activity act, View contentView, boolean isUsedInBottomSheet) {
|
|
|
|
- this.decorView = act.getWindow().getDecorView();
|
|
|
|
- this.contentView = contentView;
|
|
|
|
- this.isUsedInBottomSheet = isUsedInBottomSheet;
|
|
|
|
-
|
|
|
|
- decorView.getViewTreeObserver().addOnGlobalLayoutListener(onGlobalLayoutListener);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * Helper to hide the keyboard
|
|
|
|
- *
|
|
|
|
- * @param act
|
|
|
|
- */
|
|
|
|
- public static void hideKeyboard(Activity act) {
|
|
|
|
- if (act != null && act.getCurrentFocus() != null) {
|
|
|
|
- InputMethodManager inputMethodManager = (InputMethodManager) act.getSystemService(Activity.INPUT_METHOD_SERVICE);
|
|
|
|
- inputMethodManager.hideSoftInputFromWindow(act.getCurrentFocus().getWindowToken(), 0);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public void enable() {
|
|
|
|
- decorView.getViewTreeObserver().addOnGlobalLayoutListener(onGlobalLayoutListener);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public void disable() {
|
|
|
|
- decorView.getViewTreeObserver().removeOnGlobalLayoutListener(onGlobalLayoutListener);
|
|
|
|
- }
|
|
|
|
-}
|
|
|