Пожалуйста, обратите внимание: Я не буду представлять ответ с возможностью копирования и вставки, а скорее схему того, как добавлять изображения. Вам нужно будет самостоятельно интегрировать код в свое решение.
Вкл. iOS
Уже есть вопрос о том, как этого добиться с помощью Swift на iOS, * 1007. * вы можете найти его здесь .
В основном, что вам нужно сделать, это установить правый (или левый, соответственно) вид на UITextField
из вашего пользовательского средства визуализации (в OnElementChanged
).
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
var imageView = new UIImageView(new CGRect(0, 0, 20, 20));
var image = UIImage.FromFile("ic_location.png");
imageView.Image = image;
this.Control.RightView = imageView;
this.Control.RightViewMode = UITextFieldViewMode.Always;
}
Устанавливает вид справа от UITextField
на UIImageView
. Если вы хотите вместо этого отобразить значок перед текстом , вам нужно вместо этого установить LeftView
и LeftViewMode
. Вот как это выглядит. (Я намеренно не вставил изображение, потому что оно сделало ответ менее читаемым.)
Конечно, файл ic_location.png
должен быть на вашей платформе ресурсы проектов.
Вам может потребоваться какая-то тонкая настройка, но в основном это все.
Вкл. Android
TextView.setCompoundDrawablesWithIntrinsicBounds
Устанавливает Drawables (если таковые имеются), чтобы появиться слева, сверху, справа от, и под текстом. Используйте null
, если вы не хотите рисовать там. Границы Drawables будут установлены на их внутренние c границы. ( source )
Загрузив значок из ресурса и установив его с помощью SetCompoundDrawablesWithIntrinsicBounds
(заглавными буквами, так как мы сейчас на C#), вы можете отобразить Entry
со значком:
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
this.Control.SetCompoundDrawablesWithIntrinsicBounds(null, null, this.GetIcon(), null);
this.Control.CompoundDrawablePadding = 25;
}
private Drawable GetIcon()
{
int resID = Resources.GetIdentifier("ic_location", "drawable", this.Context.PackageName);
var drawable = ContextCompat.GetDrawable(this.Context, resID);
var bitmap = ((BitmapDrawable)drawable).Bitmap;
return new BitmapDrawable(Resources, Bitmap.CreateScaledBitmap(bitmap, 20, 20, true));
}
Так выглядит версия Android.
Чтобы показать значок слева слева, передайте отрисовку к первому параметру вместо третьего.