ili 4 years ago
parent
commit
42ad65167c

+ 6 - 6
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);
         }
     }

+ 1 - 9
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<ViewImpl>(_view);
-            _keyboardHelper = new AndroidKeyboardEventsHelper<TopLevelImpl>(this, _textInputMethod);
+            _keyboardHelper = new AndroidKeyboardEventsHelper<TopLevelImpl>(this);
             _touchHelper = new AndroidTouchEventsHelper<TopLevelImpl>(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) =>

+ 1 - 21
src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs

@@ -19,15 +19,12 @@ namespace Avalonia.Android.Platform.Specific.Helpers
     internal class AndroidKeyboardEventsHelper<TView> : 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;