diff --git a/src/Android/Avalonia.Android/AndroidInputMethod.cs b/src/Android/Avalonia.Android/AndroidInputMethod.cs index a3e6b6ee88..efb48158bc 100644 --- a/src/Android/Avalonia.Android/AndroidInputMethod.cs +++ b/src/Android/Avalonia.Android/AndroidInputMethod.cs @@ -1,11 +1,8 @@ using System; -using System.Collections.Generic; -using System.Text; using Android.Content; using Android.Runtime; using Android.Views; using Android.Views.InputMethods; -using Avalonia.Controls.Platform; using Avalonia.Input; using Avalonia.Input.TextInput; @@ -38,7 +35,13 @@ namespace Avalonia.Android public void SetActive(bool active) { if (active) + { _host.RequestFocus(); + Reset(); + _imm.ShowSoftInput(_host, ShowFlags.Implicit); + } + else + _imm.HideSoftInputFromWindow(_host.WindowToken, HideSoftInputFlags.None); } public void SetCursorRect(Rect rect) @@ -81,14 +84,11 @@ namespace Avalonia.Android outAttrs.InputType |= global::Android.Text.InputTypes.TextFlagMultiLine; }); - Reset(); _inputElement.PointerReleased += RestoreSoftKeyboard; - RestoreSoftKeyboard(null, null); } private void RestoreSoftKeyboard(object sender, PointerReleasedEventArgs e) { - //_imm.ToggleSoftInput(ShowFlags.Implicit, HideSoftInputFlags.NotAlways); _imm.ShowSoftInput(_host, ShowFlags.Implicit); } } diff --git a/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs b/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs index a4bc8c4b76..0b6dcba1ef 100644 --- a/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs +++ b/src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs @@ -35,7 +35,7 @@ namespace Avalonia.Android.Platform.SkiaPlatform { _view = new ViewImpl(context, this, placeOnTop); _textInputMethod = new AndroidInputMethod(_view); - _keyboardHelper = new AndroidKeyboardEventsHelper(this, _textInputMethod); + _keyboardHelper = new AndroidKeyboardEventsHelper(this); _touchHelper = new AndroidTouchEventsHelper(this, () => InputRoot, GetAvaloniaPointFromEvent); @@ -46,14 +46,6 @@ namespace Avalonia.Android.Platform.SkiaPlatform MaxClientSize = new PixelSize(_view.Resources.DisplayMetrics.WidthPixels, _view.Resources.DisplayMetrics.HeightPixels).ToSize(RenderScaling); - - _keyboardHelper.ActivateAutoShowKeyboard(); - } - - public bool HandleEvents - { - get { return _keyboardHelper.HandleEvents; } - set { _keyboardHelper.HandleEvents = value; } } public virtual Point GetAvaloniaPointFromEvent(MotionEvent e, int pointerIndex) => diff --git a/src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs b/src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs index d79417a9f1..c7821d495e 100644 --- a/src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs +++ b/src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs @@ -19,15 +19,12 @@ namespace Avalonia.Android.Platform.Specific.Helpers internal class AndroidKeyboardEventsHelper : IDisposable where TView : TopLevelImpl, IAndroidView { private readonly TView _view; - private readonly ITextInputMethodImpl _textInpuMethod; - private IInputElement _lastFocusedElement; public bool HandleEvents { get; set; } - public AndroidKeyboardEventsHelper(TView view, ITextInputMethodImpl androidTextInput) + public AndroidKeyboardEventsHelper(TView view) { _view = view; - _textInpuMethod = androidTextInput; HandleEvents = true; } @@ -103,23 +100,6 @@ namespace Avalonia.Android.Platform.Specific.Helpers return rv; } - public void ActivateAutoShowKeyboard() - { - var kbDevice = (KeyboardDevice.Instance as INotifyPropertyChanged); - - //just in case we've called more than once the method - kbDevice.PropertyChanged -= KeyboardDevice_PropertyChanged; - kbDevice.PropertyChanged += KeyboardDevice_PropertyChanged; - } - - private void KeyboardDevice_PropertyChanged(object sender, PropertyChangedEventArgs e) - { - if (e.PropertyName == nameof(KeyboardDevice.FocusedElement)) - { - //UpdateKeyboardState(KeyboardDevice.Instance.FocusedElement); - } - } - public void Dispose() { HandleEvents = false;