summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.ControlGallery.Android/_58406EffectRenderer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.ControlGallery.Android/_58406EffectRenderer.cs')
-rw-r--r--Xamarin.Forms.ControlGallery.Android/_58406EffectRenderer.cs67
1 files changed, 67 insertions, 0 deletions
diff --git a/Xamarin.Forms.ControlGallery.Android/_58406EffectRenderer.cs b/Xamarin.Forms.ControlGallery.Android/_58406EffectRenderer.cs
new file mode 100644
index 00000000..b34b38a5
--- /dev/null
+++ b/Xamarin.Forms.ControlGallery.Android/_58406EffectRenderer.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Diagnostics;
+using System.Linq;
+using Android.Widget;
+using Xamarin.Forms;
+using Xamarin.Forms.Controls.Issues;
+using Xamarin.Forms.Platform.Android;
+
+[assembly: ExportEffect(typeof(Xamarin.Forms.ControlGallery.Android._58406EffectRenderer), Bugzilla58406.EffectName)]
+
+namespace Xamarin.Forms.ControlGallery.Android
+{
+ public class _58406EffectRenderer : PlatformEffect
+ {
+ protected override void OnAttached()
+ {
+ var tv = Control as TextView;
+
+ if (tv == null)
+ {
+ return;
+ }
+
+ ReverseText(tv, tv.Text);
+ tv.TextChanged += OnTextChanged;
+ }
+
+ bool _ignoreNextTextChange;
+
+ void OnTextChanged(object sender, global::Android.Text.TextChangedEventArgs textChangedEventArgs)
+ {
+ var tv = sender as TextView;
+
+ if (tv == null)
+ {
+ return;
+ }
+
+ if (_ignoreNextTextChange)
+ {
+ _ignoreNextTextChange = false;
+ return;
+ }
+
+ _ignoreNextTextChange = true;
+
+ ReverseText(tv, textChangedEventArgs.Text.ToString());
+ }
+
+ static void ReverseText(TextView tv, string text)
+ {
+ var rev = new string(text.Reverse().ToArray());
+ tv.Text = rev;
+ }
+
+ protected override void OnDetached()
+ {
+ var tv = Control as TextView;
+ if (tv == null)
+ {
+ return;
+ }
+
+ tv.TextChanged -= OnTextChanged;
+ }
+ }
+} \ No newline at end of file