Phi*_*ill 6 c# xamarin.ios xamarin.android xamarin xamarin.forms
我想要一个条目在占位符前面有一个图标,并在条目末尾有一个图标,以显示和隐藏条目中的文本,我有一个带有显示和隐藏图标的条目使用本教程: https:// www.techierathore.com/2017/09/xamarin-forms-tip-implement-show-hide-password-using-effects/
但是现在我想在输入之前有图标,我可以通过本教程做到这一点:https: //xamgirl.com/image-entry-in-xamarin-forms/
但是,如果我将第一个教程的效果添加到自定义条目,则只显示和隐藏/显示图标.
有可能做我想要的吗?
Bil*_*SFT 10
您可以使用editText.SetCompoundDrawablesRelativeWithIntrinsicBounds()添加两个图标.
SetCompoundDrawablesRelativeWithIntrinsicBounds为start,top,end和bottom drawable提供四个参数.在第一个教程中,隐藏/显示图标添加到结尾,您可以将第一个参数从0更改为您的drawable.有三个地方需要修改.
例如:
public class ShowHidePassEffect : PlatformEffect
{
protected override void OnAttached()
{
ConfigureControl();
}
protected override void OnDetached()
{
}
private void ConfigureControl()
{
EditText editText = ((EditText)Control);
editText.SetCompoundDrawablesRelativeWithIntrinsicBounds(Resource.Drawable.Password, 0, Resource.Drawable.ShowPass, 0);
editText.SetOnTouchListener(new OnDrawableTouchListener());
}
}
public class OnDrawableTouchListener : Java.Lang.Object, Android.Views.View.IOnTouchListener
{
public bool OnTouch(Android.Views.View v, MotionEvent e)
{
if (v is EditText && e.Action == MotionEventActions.Up)
{
EditText editText = (EditText)v;
if (e.RawX >= (editText.Right - editText.GetCompoundDrawables()[2].Bounds.Width()))
{
if (editText.TransformationMethod == null)
{
editText.TransformationMethod = PasswordTransformationMethod.Instance;
editText.SetCompoundDrawablesRelativeWithIntrinsicBounds(Resource.Drawable.Password, 0, Resource.Drawable.ShowPass, 0);
}
else
{
editText.TransformationMethod = null;
editText.SetCompoundDrawablesRelativeWithIntrinsicBounds(Resource.Drawable.Password, 0, Resource.Drawable.HidePass, 0);
}
return true;
}
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)