diff options
author | drhaal <drhaal@protonmail.com> | 2021-06-10 21:46:56 +0300 |
---|---|---|
committer | drhaal <drhaal@protonmail.com> | 2021-06-10 21:47:07 +0300 |
commit | 7a59c808a34b7fe472cc681065154bba2098ae2d (patch) | |
tree | 50c99e7d642c8a9d50768049bbec751cb5a8cdfa /app/src/main/java/it/niedermann/owncloud/notes/shared | |
parent | 988ce872ccbfb5f96825d90eea811e5e1a713cfc (diff) |
check for nulls + use proper keyboard detection on API 30+
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud/notes/shared')
-rw-r--r-- | app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java index 297c843c..ffea98b1 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/DisplayUtils.java @@ -11,11 +11,14 @@ import android.text.TextUtils; import android.text.style.MetricAffectingSpan; import android.util.TypedValue; import android.view.View; +import android.view.WindowInsets; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import java.util.Collection; import java.util.List; @@ -58,12 +61,21 @@ public class DisplayUtils { } /** - * Android does not provide a way to get keyboard visibility prior to API 30 so we use a workaround + * Detect if the soft keyboard is open. + * On API prior to 30 we fall back to workaround which might be less reliable * * @param parentView View * @return keyboardVisibility Boolean */ - public static boolean isSoftKeyboardVisible(View parentView) { + public static boolean isSoftKeyboardVisible(@NonNull View parentView) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + WindowInsetsCompat insets = ViewCompat.getRootWindowInsets(parentView); + if(insets != null){ + return insets.isVisible(WindowInsets.Type.ime()); + } + } + //Fall Back to workaround + //Arbitrary keyboard height final int defaultKeyboardHeightDP = 100; final int EstimatedKeyboardDP = defaultKeyboardHeightDP + (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? 48 : 0); |