2016-06-14 49 views

回答

11

我想你只能用CustomRenderer實現這一目標:

的iOS:

protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) 
{ 
     base.OnElementPropertyChanged(sender, e); 

     Control.Layer.BorderColor = UIColor.Red.CGColor; 
     Control.Layer.BorderWidth = 1; 
} 

在Android上,我認爲it's可能沒有CustomRender(實際上,如果是我...不知道怎麼〜不好意思):

使用CustomRenderer會是這樣的:

[assembly: ExportRenderer(typeof(Entry), typeof(SuperEntryRenderer))] 
    namespace Bla{ 
    public class SuperEntryRenderer : EntryRenderer 
     { 
      protected override void OnElementChanged(ElementChangedEventArgs<Entry> e) 
      { 
       base.OnElementChanged(e); 
       if (e.OldElement == null) 
       { 
        var nativeEditText = (global::Android.Widget.EditText)Control; 
        var shape = new ShapeDrawable(new Android.Graphics.Drawables.Shapes.RectShape()); 
        shape.Paint.Color = Xamarin.Forms.Color.Red.ToAndroid(); 
        shape.Paint.SetStyle(Paint.Style.Stroke); 
        nativeEditText.Background = shape; 
       } 
      } 
     } 
+0

臨屋對你來說,這對於那些只是鑽研自定義渲染器的人來說是非常有幫助的。 我很驚訝需要做多少才能改變android上的邊框顏色。 – DisplayName