FMX安卓APP,输入法面板最小化(隐藏)时,就是点击输入法面板右上角的下三角按钮时,不会触发OnVirtualKeyboardHidden事件

ooolinux 2022-11-16 16:09:24

FMX安卓APP,输入法面板最小化(隐藏)时,就是点击输入法面板右上角的下三角按钮时,不会触发OnVirtualKeyboardHidden事件(按系统返回键可以触发),这个从代码层面有没有办法?比如用定时器检测之类的

 

 

...全文
312 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

我查到一种简单的解决方法,在项目的androidmanifest.xml中加入一行
android:windowSoftInputMode="adjustResize"
据说这样之后,虚拟键盘窗口显示/隐藏的时候,系统会调整应用窗口的大小
你可以试试

ooolinux 2022-11-29
  • 举报
回复
@日立奔腾浪潮微软松下联想 我有空试试
  • 打赏
  • 举报
回复

我看了一下,他这个针对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位版了

ooolinux 2022-11-26
  • 举报
回复
@日立奔腾浪潮微软松下联想 把这个pas加入CB的工程可以吗?
  • 举报
回复
@ooolinux 也应该是可以的,但只有当前工程可用
ooolinux 2022-11-27
  • 举报
回复
@日立奔腾浪潮微软松下联想 代码再改了一下,能用了,就是基于Timer而不是消息有点凑合, 不知道英巴最新版本有没有解决虚拟键盘隐藏的问题
  • 打赏
  • 举报
回复

可以删除某个虚拟键盘按钮或者捕捉虚拟键盘按钮的事件
uses FMX.Platform;

if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService) then
begin
// ...
end;

我有空再研究一下,毕竟对安卓没有windows那么熟悉~

ooolinux 2022-11-19
  • 举报
回复
@日立奔腾浪潮微软松下联想 ok
ooolinux 2022-11-23
  • 举报
回复
@日立奔腾浪潮微软松下联想 https://blog.csdn.net/weixin_36154762/article/details/117609166 这个代码是做什么用的?
  • 举报
回复
@ooolinux 应该是把焦点控制移到虚拟键盘窗口的上方
2条回复
tanqth 2022-11-16
  • 打赏
  • 举报
回复

是的,这个是一个BUG哈。

ooolinux 2022-11-17
  • 举报
回复
@tanqth 有解决办法吗?
tanqth 2022-11-17
  • 举报
回复
@ooolinux 老猫的补丁有解决。
ooolinux 2022-11-18
  • 举报
回复
@tanqth 关键字是什么?CB能用吗?
5条回复
  • 打赏
  • 举报
回复

点了后是什么状态

ooolinux 2022-11-16
  • 举报
回复
@日立奔腾浪潮微软松下联想 面板隐藏,但没有其它动作
ooolinux 2022-11-17
  • 举报
回复
@日立奔腾浪潮微软松下联想 这个有办法吗?
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

5,943

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧