Android实例-处理隐藏输入法后不再显示问题(XE8+小米2)

时间:2023-03-09 06:01:54
Android实例-处理隐藏输入法后不再显示问题(XE8+小米2)

Android实例-处理隐藏输入法后不再显示问题(XE8+小米2)

结果:

1.可以处理再次显示问题,但缺点是每个控件都要处理一次,累。哪位大神有好的处理方法,请M我。

实例代码:

 unit Unit1;

 interface

 uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.ComboEdit,
FMX.Edit, FMX.EditBox, FMX.NumberBox, FMX.DateTimeCtrls, FMX.ScrollBox,
FMX.Memo, FMX.Controls.Presentation, FMX.StdCtrls,
FMX.VirtualKeyboard,//需要引入
FMX.Platform,//需要引入
FMX.Layouts; type
TForm1 = class(TForm)
VertScrollBox1: TVertScrollBox;
Layout1: TLayout;
Memo1: TMemo;
Label1: TLabel;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormFocusChanged(Sender: TObject);
procedure FormVirtualKeyboardHidden(Sender: TObject;
KeyboardVisible: Boolean; const Bounds: TRect);
procedure FormVirtualKeyboardShown(Sender: TObject;
KeyboardVisible: Boolean; const Bounds: TRect);
procedure Edit2Click(Sender: TObject);
private
//定义输入法变量
FService: IFMXVirtualKeyboardToolbarService;
FService_kb: FMX.VirtualKeyboard.IFMXVirtualKeyboardService;
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.fmx}
{$R *.NmXhdpiPh.fmx ANDROID}
//如果再次点击EDIT应做出反映
procedure TForm1.Edit2Click(Sender: TObject);
begin
if TEdit(Sender).IsFocused and Assigned(FService_kb) then
try
FService_kb.ShowVirtualKeyboard(TEdit(Sender));
except
end;
end; procedure TForm1.FormCreate(Sender: TObject);
begin
//控制虚拟键盘的操作
TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService,
IInterface(FService_kb));
if TPlatformServices.Current.SupportsPlatformService
(IFMXVirtualKeyboardToolbarService, IInterface(FService))then
begin
FService.SetToolbarEnabled(true);
FService.SetHideKeyboardButtonVisibility(true);
end;
end; end.