Android:为Xamarin.Forms添加自定义键盘

时间:2017-04-04 14:09:09

标签: xamarin xamarin.android xamarin.forms

我正在开发一个Xamarin Forms项目。

我们正在测试运行KitKat的Android设备,该设备具有12键键盘。

我正在尝试强制软输入键盘在显示焦点时显示我创建了一个自定义渲染器的条目,该渲染器会覆盖FocusChange和Clicked事件。

当我检测到设备是否具有物理键盘以及entryKeyboard是否为数字时,它有点起作用。如果这两个条件都成立,我打电话

        Control.ShowSoftInputOnFocus = false;

            imm.HideSoftInputFromWindow(Control.WindowToken, HideSoftInputFlags.None);

除非打开包含Entry编辑器的视图,否则它主要起作用。键盘显示片刻然后消失。这是两个方面的问题。当键盘被测量时,它向上移动最终位于视图底部的按钮,因此当键盘最终消失时,按钮会出现,向上移动然后向下移动。其次,偶尔它不起作用。我们已经放了一些延迟,但这只会加剧问题,因为键盘在屏幕上停留的时间更长。

在一个完美的世界里,我不关心延迟,我只是不希望softInput出现在这个视图的任何地方,除非我特别要求它,

或者,我不介意编写自己的隐形键盘,并且必须在异步过程执行时显示(隐形)。

我一直在各地寻找,所以任何帮助都会非常感激。

提前致谢并度过愉快的一天

1 个答案:

答案 0 :(得分:1)

我认为您需要为EditText制作自定义渲染器。然后还创建自己的EditText实现,该实现会覆盖OnCheckIsTextEditor方法,该方法只返回false

如果您只针对Android API 21及更高版本,则可以在所有ShowSoftInputOnFocus = false个实例上调用EditText。这可能是通过Xamarin.Forms中的效果来完成的。