В моем приложении Xamarin.Forms я использую настраиваемое средство визуализации для записей, поскольку я хочу, чтобы они состояли из единой нижней границы. Проблема в том, что я не могу найти правильный код, чтобы пользовательский рендерер использовал ширину элемента. В настоящее время ситуация такова:
Как видите, нижняя граница выходит далеко за пределы реальной ширины элемента, но я не понимаю почему. Здесь Я кое-что нашел, но все еще не понимаю, как это исправить и почему это происходит. Мой текущий код для класса рендерера:
public class CustomEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.BorderStyle = UITextBorderStyle.None;
var view = Element as CustomEntry;
var borderLayer = new CALayer
{
Frame = new CGRect(0f, Frame.Height + 5, Frame.Width, 1f),
BorderColor = UIColor.Gray.CGColor,
BackgroundColor = UIColor.Magenta.CGColor,
BorderWidth = 13,
MasksToBounds = true
};
Control.Layer.AddSublayer(borderLayer);
}
}
}
Проблема вроде в том Frame.Width
. Например, если я установил его на 100, ширина нижней строки записи будет установлена на 100, но проблема в том, что при этом я не могу центрировать линию по горизонтали. Я хочу такого результата:
@ LeoZhu-MSFT, не могли бы вы сказать мне, что мне писать вместо Frame.Width
? Учтите, что четыре нижние линии должны иметь одинаковую ширину. Прошу прощения, если мой вопрос был недостаточно ясным: я обновил его!
Вы пытались использовать ширину текста вместо Frame.Width?