abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/Keyboard2.java
diff options
context:
space:
mode:
authorvladgba2023-05-24 20:23:28 +0300
committerGitHub2023-05-24 19:23:28 +0200
commit62943ba4d33f65ce0019f28f9ad2be7e811c272a (patch)
tree17ee6cac6915729de93b1305e00154c19def940d /srcs/juloo.keyboard2/Keyboard2.java
parent649aea8c799898821a10bb6648912fdd6b34e974 (diff)
downloadunexpected-keyboard-62943ba4d33f65ce0019f28f9ad2be7e811c272a.tar.gz
unexpected-keyboard-62943ba4d33f65ce0019f28f9ad2be7e811c272a.zip
Fix gravity of keyboard in full screen (#363)
Set keyboard bottom gravity and adjust inputArea height so it doesn't appear on top in fullscreen.
Diffstat (limited to 'srcs/juloo.keyboard2/Keyboard2.java')
-rw-r--r--srcs/juloo.keyboard2/Keyboard2.java63
1 files changed, 58 insertions, 5 deletions
diff --git a/srcs/juloo.keyboard2/Keyboard2.java b/srcs/juloo.keyboard2/Keyboard2.java
index 6348a1b..c41a22f 100644
--- a/srcs/juloo.keyboard2/Keyboard2.java
+++ b/srcs/juloo.keyboard2/Keyboard2.java
@@ -9,11 +9,7 @@ import android.os.IBinder;
import android.text.InputType;
import android.util.Log;
import android.util.LogPrinter;
-import android.view.ContextThemeWrapper;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.ViewParent;
+import android.view.*;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodInfo;
@@ -23,6 +19,8 @@ import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
public class Keyboard2 extends InputMethodService
implements SharedPreferences.OnSharedPreferenceChangeListener
@@ -288,6 +286,61 @@ public class Keyboard2 extends InputMethodService
if (parent != null && parent instanceof ViewGroup)
((ViewGroup)parent).removeView(v);
super.setInputView(v);
+ updateSoftInputWindowLayoutParams();
+ }
+
+
+ @Override
+ public void updateFullscreenMode() {
+ super.updateFullscreenMode();
+ updateSoftInputWindowLayoutParams();
+ }
+
+ private void updateSoftInputWindowLayoutParams() {
+ final Window window = getWindow().getWindow();
+ updateLayoutHeightOf(window, ViewGroup.LayoutParams.MATCH_PARENT);
+ final View inputArea = window.findViewById(android.R.id.inputArea);
+
+ updateLayoutHeightOf(
+ (View) inputArea.getParent(),
+ isFullscreenMode()
+ ? ViewGroup.LayoutParams.MATCH_PARENT
+ : ViewGroup.LayoutParams.WRAP_CONTENT);
+ updateLayoutGravityOf((View) inputArea.getParent(), Gravity.BOTTOM);
+
+ }
+
+ private static void updateLayoutHeightOf(final Window window, final int layoutHeight) {
+ final WindowManager.LayoutParams params = window.getAttributes();
+ if (params != null && params.height != layoutHeight) {
+ params.height = layoutHeight;
+ window.setAttributes(params);
+ }
+ }
+
+ private static void updateLayoutHeightOf(final View view, final int layoutHeight) {
+ final ViewGroup.LayoutParams params = view.getLayoutParams();
+ if (params != null && params.height != layoutHeight) {
+ params.height = layoutHeight;
+ view.setLayoutParams(params);
+ }
+ }
+
+ private static void updateLayoutGravityOf(final View view, final int layoutGravity) {
+ final ViewGroup.LayoutParams lp = view.getLayoutParams();
+ if (lp instanceof LinearLayout.LayoutParams) {
+ final LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) lp;
+ if (params.gravity != layoutGravity) {
+ params.gravity = layoutGravity;
+ view.setLayoutParams(params);
+ }
+ } else if (lp instanceof FrameLayout.LayoutParams) {
+ final FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) lp;
+ if (params.gravity != layoutGravity) {
+ params.gravity = layoutGravity;
+ view.setLayoutParams(params);
+ }
+ }
}
@Override