如何在自定义Android键盘中实现键预览弹出

piv4azn7  于 2022-12-31  发布在  Android
关注(0)|答案(1)|浏览(162)

我目前正在开发一个自定义andriod键盘供我个人使用:https://github.com/soobakjonmat/Custom-Layout-Keyboard-for-Android
样本图像

我的键盘的基本结构是基于微软的SwiftKey。
我几乎已经完成了一切,除了我找不到一种方法来实现关键预览弹出。
例如(Gboard和Microsoft快捷键):
第一节第一节第一节第二节第一节
我看过很多关于这个实现的帖子,但他们都有5年的历史了,他们使用的是KeyboardView类,现在已经过时了,我也没有用它来创建我的键盘,所以我试着自己实现它。
一开始我试着像微软的SwiftKey一样实现它,每次按下它时我都试着增加Button的高度,但它也增加了其他Button的高度,因为它们在同一个LinearLayout中,我用重量来设置它们的高度。
所以我尝试像Gboard一样实现它,但我不知道如何在用户按下的键上方显示图像或文本。我尝试使用ImageView来显示键预览,但我不确定如何或在布局中的何处添加视图。
任何帮助或忠告都将不胜感激。

blmhpbnm

blmhpbnm1#

我自己找到了解决方法,使用PopupWindowhttps://developer.android.com/reference/kotlin/android/widget/PopupWindow
创建一个PopupWindow,并将其contentView设置为TextView,然后无论何时要显示它,都调用showAtLocationupdate方法。
例如:

val btn = Button(baseContext)
val popup = PopupWindow()
popup.contentView = TextView(baseContext)
val loc = IntArray(2)
btn.getLocationInWindow(loc)
popup.showAtLocation(btn, Gravity.NO_GRAVITY, 0, 0)
popup.update(loc[0], loc[1]-128, 128, 128, false)

对于未来的人们,如果有人也遇到了同样的问题,并希望了解更多的细节,请查看我的github存储库,这是在本文开头提到的。

相关问题