我正在嘗試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(); } }為了足夠清楚,以防萬一,我想要底線為紅色,文本為黑色。
1 回答

揚帆大魚
TA貢獻1799條經驗 獲得超9個贊
這似乎是一個永遠不會被調用的現有問題CustomRenderer。我們將重點關注這個問題。
解決方法1:
如果你只是想設置 的下劃線顏色Entry。無需設置Visual=Material,只需創建一個默認的Custom Renderer即可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 中設置WidthRequestand HeightRequest。
解決方法2
幸運的是,nuget 有很多 Material Controls 插件。并且您可以直接下載并使用。例如MaterialFormControls
從 Nuget Manager 下載軟件包(確保選中包含預發布)
并設置屬性 AccentColor 來更改下劃線顏色
<local:MaterialEntry?IsPassword="True"?Placeholder="email"?AccentColor="Red"/>
- 1 回答
- 0 關注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消