bitwarden-mobile/src/Android/Renderers/CustomEditorRenderer.cs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

70 lines
2.3 KiB
C#
Raw Normal View History

using System.ComponentModel;
using Android.Content;
using Android.Content.Res;
using Android.Views.InputMethods;
2019-05-13 21:25:20 +02:00
using Bit.Droid.Renderers;
using Bit.Droid.Utilities;
2019-05-08 05:22:25 +02:00
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRenderer(typeof(Editor), typeof(CustomEditorRenderer))]
2019-05-13 21:25:20 +02:00
namespace Bit.Droid.Renderers
2019-05-08 05:22:25 +02:00
{
2019-05-08 21:00:45 +02:00
public class CustomEditorRenderer : EditorRenderer
2019-05-08 05:22:25 +02:00
{
2019-05-08 21:00:45 +02:00
public CustomEditorRenderer(Context context)
2019-05-08 05:22:25 +02:00
: base(context)
{ }
// Workaround for issue described here:
// https://github.com/xamarin/Xamarin.Forms/issues/8291#issuecomment-617456651
protected override void OnAttachedToWindow()
{
base.OnAttachedToWindow();
EditText.Enabled = false;
EditText.Enabled = true;
}
2019-05-08 05:22:25 +02:00
2019-05-08 21:00:45 +02:00
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
2019-05-08 05:22:25 +02:00
{
base.OnElementChanged(e);
UpdateBorderColor();
if (Control != null && e.NewElement != null)
2019-05-08 05:22:25 +02:00
{
Control.SetPadding(Control.PaddingLeft, Control.PaddingTop - 10, Control.PaddingRight,
Control.PaddingBottom + 20);
2019-06-03 23:23:50 +02:00
Control.ImeOptions = Control.ImeOptions | (ImeAction)ImeFlags.NoPersonalizedLearning |
(ImeAction)ImeFlags.NoExtractUi;
2019-05-08 05:22:25 +02:00
}
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == Entry.TextColorProperty.PropertyName)
{
UpdateBorderColor();
}
}
private void UpdateBorderColor()
{
if (Control != null)
{
var states = new[]
{
new[] { Android.Resource.Attribute.StateFocused }, // focused
new[] { -Android.Resource.Attribute.StateFocused }, // unfocused
};
var colors = new int[]
{
ThemeHelpers.PrimaryColor,
ThemeHelpers.MutedColor
};
Control.BackgroundTintList = new ColorStateList(states, colors);
}
}
2019-05-08 05:22:25 +02:00
}
}