fix(android): Convert Keyman app layout to use ConstraintLayout for handling edge-to-edge 🪟#14396
Conversation
User Test ResultsTest specification and instructions
Results TemplateRetesting TemplateTest Artifacts |
|
@darcywong00 The App Builders have the same API35 problem. I see that your fix is in the Keyman Android app and not the Keyman engine. Does the proposed fix extend to a SystemKeyboard when the app is closed and make it show above the toolbar as well? |
|
I'm still trying to work on the fix (this is in progress :( ) |
|
Well it seems that you and @AaronHemphill are SIL's experts on this issue (we just discovered it today). App builders was hoping to release AB 13 soon and this API35 issue may be a blocker. It seems to affect all of the apps' bottom elements, but blocking the bottom bar of a keyboard is the worst case. |
8a5ddfc to
526775d
Compare
Using Android Studio's tool to convert the top level RelativeLayout to ConstraintLayout. This way, the edge-to-edge doesn't cover up the top and bottom portions of the app. Also apply insets so app and keyboard fit in usable areas.
526775d to
85986dd
Compare
PR ready to re-review.
Note: only the main app is updated (in-app keyboard and system keyboard).
|
Richard has completed his inset work for the app builders, including fixing these margins. |
|
@dinakaranr - maybe a polyfill missing on older Android device. I'll change the tests to use API 34 instead. |
This brings in some of the changes the Keyboard App builder team did to integrate with Keyman Engine for Android 18.0 and supporting edge to edge
|
Ah, there may be some interaction on the Android 36 emulator while a physical keyboard is plugged in. device Settings --> Keyboard --> On-screen keyboard --> click Gboard --> physical keyboard --> Show on-screen keyboard needs to be "on" |
|
Setup steps for API 36 updated. |
|
I still can't get the OSK to show on API 36. Will move those tests and address on a follow-on PR Copying those test steps here: And clearing the tests that got moved: Test-bot: retest GROUP_PHONE_API_36 TEST_SYSTEM_KEYBOARD, GROUP_TABLET_API_36 TEST_SYSTEM_KEYBOARD |
|
Hi all, I'm no expert on this issue, but I thought I had resolved edge to
edge layout issues for Alpha Tiles, but then the Play Store started
complaining about apps that were being published, so I spent the day
yesterday working with ChatGPT to rewrite the entire ActivityLayouts.java
file and then testing it on several devices. I think we're all set now, but
we'll see what feedback the Play Store review gives and what feedback
(hopefully none!) we get from teams receiving the updated version of the
Alpha Tiles app. Here's the before and after of ActivityLayouts.java:
https://github.com/AlphaTiles/AlphaTiles/pull/237/files#diff-ffa9782556981f30f50417410a12d591b1659c2b19873327147a9330bbc1982e
Aaron
…On Tue, Aug 12, 2025 at 2:41 AM Darcy Wong ***@***.***> wrote:
*darcywong00* left a comment (keymanapp/keyman#14396)
<#14396 (comment)>
I still can't get the OSK to show on API 36. Will move those tests and
address on a follow-on PR
Copying those test steps here:
For GROUP_PHONE_API_36 and GROUP_TABLET_API_36, additional steps if running on emulator:
device Settings --> Keyboard --> On-screen keyboard --> click Gboard --> physical keyboard --> Show on-screen keyboard needs to be "on". This way, the on-screen keyboard appears in the emulator.
GROUP_PHONE_API_36: Use Android API 36 on a phone device/emulator. Also change device to use 3-button navigation. Go to Device settings --> Display & Touch --> Navigation mode --> change from "Gesture navigation" to "3-button navigation"
GROUP_TABLET_API_36: Use Android API 36 on a tablet device/emulator. Also change device to use 3-button navigation. Go to Device settings --> Display & Touch --> Navigation mode --> change from "Gesture navigation" to "3-button navigation"
—
Reply to this email directly, view it on GitHub
<#14396 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ARCHYOVHHYNAAWSHFRUVF4L3NGSEVAVCNFSM6AAAAACCHNQF6KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTCNZYGMZTCNRUGM>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
It'd be better to get it fixed fully here, I think. I don't want to see the build on master not working on API 36 devices... |
|
Changes in this pull request will be available for download in Keyman version 19.0.101-alpha |




Follows #14395 for #14248
This uses Android Studio's tool to convert the top level layout from
RelativeLayouttoConstraintLayout.Layout also updated with constraints to specify the order and boundaries. This way, the edge-to-edge doesn't cover up the top and bottom portions of the app.
Also incorporates @chrisvire's suggestions from the KAB team along with AlphaTiles/AlphaTiles#160 to BaseActivity
Note:
BaseActivity.setupStatusBarColors()only works on Android API M (27) through Upsidedown Cake (34)Screenshots
Phone Android API 34 in portrait and landscape orientations.
Landscape orientation width to tweak separately(Now fixed)TODO's on separate PRs:
User Testing
(edit) Changing groups from API 28 to API 34
Setup - Install the PR build of Keyman for Android on an Android device/emulator of the specified API
GROUP_PHONE_API_34: Use Android API 34 on a phone device/emulator
GROUP_TABLET_API_34: Use Android API 34 on a tablet device/emulator
.