5,557
社区成员
![](https://csdnimg.cn/release/cmsfe/public/img/topic.427195d5.png)
![](https://csdnimg.cn/release/cmsfe/public/img/me.40a70ab0.png)
![](https://csdnimg.cn/release/cmsfe/public/img/task.87b52881.png)
![](https://csdnimg.cn/release/cmsfe/public/img/share-circle.3e0b7822.png)
FMX安卓APP,输入法面板最小化(隐藏)时,就是点击输入法面板右上角的下三角按钮时,不会触发OnVirtualKeyboardHidden事件(按系统返回键可以触发),这个从代码层面有没有办法?比如用定时器检测之类的
我查到一种简单的解决方法,在项目的androidmanifest.xml中加入一行
android:windowSoftInputMode="adjustResize"
据说这样之后,虚拟键盘窗口显示/隐藏的时候,系统会调整应用窗口的大小
你可以试试
我看了一下,他这个针对XE5的修改还要稍改一下:
C:\Program Files (x86)\Embarcadero\Studio\版本\source\fmx\FMX.VirtualKeyboard.Android.pas
这个文件先备份一下,然后按他的方法添加上三段代码
最后一段要改成这样:
{+++>}
// 这里只解决: 按键盘上的隐藏后, 无法再按上一页的问题 (按上一页后, 才会执行这里).
if FState = TvkbState.Shown then
if ObtainKeyboardRect.Height < 30 then
SetState(TVirtualKeyboardAndroid.TvkbState.Hidden);
{<+++}
然后保存,进入命令行编译修改后的文件:
release版
dccaarm -JH -$O+D-L- FMX.VirtualKeyboard.Android.pas
debug版
dccaarm -JH -$O-D+L+ FMX.VirtualKeyboard.Android.pas
把生成的对应的hpp文件复制到radstudio安装目录的include\android\fmx
dcu和o文件复制到radstudio安装目录的lib\android下的对应目录
然后build你的工程就可以了
因为你只用CB,就不用编译出64位版了
可以删除某个虚拟键盘按钮或者捕捉虚拟键盘按钮的事件
uses FMX.Platform;
if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService) then
begin
// ...
end;
我有空再研究一下,毕竟对安卓没有windows那么熟悉~
是的,这个是一个BUG哈。
点了后是什么状态