summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android
diff options
context:
space:
mode:
authorJason Smith <jason.smith@xamarin.com>2016-03-26 23:29:45 -0700
committerRui Marinho <me@ruimarinho.net>2016-03-29 18:15:11 +0100
commit11dc5a5aca2842346759022fc405e89d1d0132b1 (patch)
treec587604fc9805b677e94c749788d011a36ce0a41 /Xamarin.Forms.Platform.Android
parent0e03738adefaa1accd733e817d7730f2c9b82534 (diff)
downloadxamarin-forms-11dc5a5aca2842346759022fc405e89d1d0132b1.tar.gz
xamarin-forms-11dc5a5aca2842346759022fc405e89d1d0132b1.tar.bz2
xamarin-forms-11dc5a5aca2842346759022fc405e89d1d0132b1.zip
[A]Resolve issue where calling Focus in an unfocus event would fail
Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=39702 without API change. This does cause android to always indicate a focus event was succesful now because we have no way of knowing ahead of time if it will succeed or fail. That said we always already indicated that unfocus was successful because android has no way of reporting such a failure.
Diffstat (limited to 'Xamarin.Forms.Platform.Android')
-rw-r--r--Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs2
-rw-r--r--Xamarin.Forms.Platform.Android/PlatformRenderer.cs2
-rw-r--r--Xamarin.Forms.Platform.Android/ViewRenderer.cs14
3 files changed, 15 insertions, 3 deletions
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs b/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs
index 7edbffb2..dd1c033d 100644
--- a/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs
@@ -625,6 +625,8 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
});
}
+ Context.HideKeyboard(this);
+
// 200ms is how long the animations are, and they are "reversible" in the sense that starting another one slightly before it's done is fine
return tcs.Task;
diff --git a/Xamarin.Forms.Platform.Android/PlatformRenderer.cs b/Xamarin.Forms.Platform.Android/PlatformRenderer.cs
index 4fbc0293..f31b0702 100644
--- a/Xamarin.Forms.Platform.Android/PlatformRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/PlatformRenderer.cs
@@ -61,7 +61,7 @@ namespace Xamarin.Forms.Platform.Android
break;
Context.HideKeyboard(currentView);
- RequestFocus();
+ ((Activity)Context).Window.DecorView.ClearFocus();
} while (false);
return result;
diff --git a/Xamarin.Forms.Platform.Android/ViewRenderer.cs b/Xamarin.Forms.Platform.Android/ViewRenderer.cs
index f5c094ba..0415ce93 100644
--- a/Xamarin.Forms.Platform.Android/ViewRenderer.cs
+++ b/Xamarin.Forms.Platform.Android/ViewRenderer.cs
@@ -1,6 +1,7 @@
using System;
using System.ComponentModel;
using Android.App;
+using Android.OS;
using Android.Views;
using AView = Android.Views.View;
@@ -149,11 +150,20 @@ namespace Xamarin.Forms.Platform.Android
if (Control == null)
return;
+ e.Result = true;
+
if (e.Focus)
- e.Result = Control.RequestFocus();
+ {
+ // use post being BeginInvokeOnMainThread will not delay on android
+ Looper looper = Context.MainLooper;
+ var handler = new Handler(looper);
+ handler.Post(() =>
+ {
+ Control?.RequestFocus();
+ });
+ }
else
{
- e.Result = true;
Control.ClearFocus();
}