我正在尝试为启用了Entry
的iOS平台自定义Visual=Material
字段。
我尝试通过CustomRenderer
进行操作,但是由于是iOS平台,因此我不知道如何达到此目的,例如,修改材料底部边框颜色而不修改控件的整个文本颜色。
[assembly: ExportRenderer(typeof(Entry), typeof(CustomMaterialEntryRenderer), new[] { typeof(VisualMarker.MaterialVisual) })]
public class CustomMaterialEntryRenderer : MaterialEntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control == null || e.NewElement == null) return;
Layer.BorderColor = Color.FromHex("#cedee7").ToCGColor();
}
}
为了清楚起见,以防万一,我想要底线例如为红色,文本为黑色。
谢谢!
答案 0 :(得分:1)
看来CustomRenderer
永远不会被称为一个现存的问题。我们将专注于这个问题。
如果只想设置Entry
的下划线颜色。无需设置Visual=Material
。您只需创建默认的自定义渲染器 Entry
。
if (Control != null)
{
Control.BorderStyle = UITextBorderStyle.None;
UIView lineView = new UIView()
{
Frame = new CGRect(0, Element.HeightRequest - 1, Element.WidthRequest, 1),
BackgroundColor = UIColor.Red,
};
Control.AddSubview(lineView);
}
不要忘记在xaml中设置WidthRequest
和HeightRequest
。
幸运的是,有很多来自nuget的Material Control插件。您可以直接下载和使用它。例如MaterialFormControls
从Nuget Manager下载软件包(确保检查包含的预发行版)
并设置属性AccentColor更改下划线颜色
<local:MaterialEntry IsPassword="True" Placeholder="email" AccentColor="Red"/>