Skip to content

Commit 31d09f1

Browse files
committed
Implement edge-to-edge keyboard padding with background
Re-implements dbecc26 without ugly transparency below the keyboard
1 parent e2560ee commit 31d09f1

3 files changed

Lines changed: 36 additions & 0 deletions

File tree

app/src/main/java/io/github/yawnoc/strokeinput/InputContainer.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,18 @@
88
package io.github.yawnoc.strokeinput;
99

1010
import android.content.Context;
11+
import android.graphics.Insets;
1112
import android.graphics.Typeface;
13+
import android.os.Build;
1214
import android.util.AttributeSet;
1315
import android.view.View;
16+
import android.view.ViewGroup;
1417
import android.view.ViewTreeObserver;
18+
import android.view.WindowInsets;
1519
import android.widget.FrameLayout;
1620

21+
import androidx.core.view.WindowInsetsCompat;
22+
1723
import java.util.List;
1824

1925
/*
@@ -23,6 +29,7 @@
2329
- Stroke sequence bar
2430
- Candidates view
2531
- Keyboard view
32+
- Bottom spacer (needed in API level 35+ due to edge-to-edge)
2633
2. Key preview plane (overlaid)
2734
*/
2835
public class InputContainer
@@ -34,6 +41,23 @@ public class InputContainer
3441
private CandidatesView candidatesView;
3542
private CandidatesViewAdapter candidatesViewAdapter;
3643
private KeyboardView keyboardView;
44+
private View bottomSpacer;
45+
46+
@Override
47+
public WindowInsets onApplyWindowInsets(WindowInsets insets)
48+
{
49+
super.onApplyWindowInsets(insets);
50+
51+
if (Build.VERSION.SDK_INT >= 35) // bottom spacing for edge-to-edge
52+
{
53+
final Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
54+
ViewGroup.LayoutParams layoutParameters = bottomSpacer.getLayoutParams();
55+
layoutParameters.height = systemBars.bottom;
56+
bottomSpacer.setLayoutParams(layoutParameters);
57+
}
58+
59+
return insets;
60+
}
3761

3862
public InputContainer(final Context context, final AttributeSet attributes)
3963
{
@@ -70,6 +94,11 @@ public void initialiseKeyboardView(
7094
keyboardView.setKeyboard(keyboard);
7195
}
7296

97+
public void initialiseBottomSpacer()
98+
{
99+
bottomSpacer = findViewById(R.id.bottom_spacer);
100+
}
101+
73102
public void setPopupRecessLayout(final boolean isFullscreen)
74103
{
75104
if (isFullscreen)

app/src/main/java/io/github/yawnoc/strokeinput/StrokeInputService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ public View onCreateInputView()
196196
inputContainer.initialiseStrokeSequenceBar(this);
197197
inputContainer.initialiseCandidatesView(this);
198198
inputContainer.initialiseKeyboardView(this, loadSavedKeyboard());
199+
inputContainer.initialiseBottomSpacer();
199200

200201
return inputContainer;
201202
}

app/src/main/res/layout/input_container.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@
5252
android:layout_width="wrap_content"
5353
android:layout_height="wrap_content"
5454
/>
55+
<View
56+
android:id="@+id/bottom_spacer"
57+
android:layout_width="match_parent"
58+
android:layout_height="0dp"
59+
android:background="@android:color/black"
60+
/>
5561
</LinearLayout>
5662
<io.github.yawnoc.strokeinput.KeyPreviewPlane
5763
android:id="@+id/key_preview_plane"

0 commit comments

Comments
 (0)