Search code examples
c#xamarinxamarin.formsportable-class-library

Xamrin.Forms Entry Cell How to change font size for Placeholder


I am thinking if i can change font size for placeholder on EntryCell without change fontSize for Text on EntryCell?

Is There away to change font size for Placeholder without change font size for Text

 Code = new EntryCell { Label = "Code:*", Text = "", Keyboard = Keyboard.Default, Placeholder = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" };

Solution

  • Here is a custom renderer for android. Here I'm modifying the HintTextColor(placeholder). You can modify the font in a similar way.

      using System;
    using Xamarin.Forms.Platform.Android;
    using Xamarin.Forms;
    using communityhealth;
    using Android.Graphics;
    using communityhealth.Android;
    
    
    [assembly: ExportRenderer (typeof (MyUsernameEntry), typeof (MyUsernameEntryRenderer))]
    [assembly: ExportRenderer (typeof (MyPasswordEntry), typeof (MyPasswordEntryRenderer))]
    [assembly: ExportRenderer (typeof (MyEntry), typeof (MyEntryRenderer))]
    
    namespace communityhealth.Android
    {
        public class MyEntryRenderer : EntryRenderer
        {
            protected override void OnElementChanged (ElementChangedEventArgs<Entry> e)
            {
                base.OnElementChanged (e);
                if (e.OldElement == null) {   // perform initial setup
                    // lets get a reference to the native control
                    var nativeEditText = (global::Android.Widget.EditText) Control;
                    // do whatever you want to the textField here!
                    nativeEditText.SetBackgroundColor(global::Android.Graphics.Color.Transparent);
                    nativeEditText.SetTextColor(global::Android.Graphics.Color.White);
                    Typeface font = Typeface.CreateFromAsset (Forms.Context.Assets, "Neris-Light.otf");
                    nativeEditText.TextSize = 14f;
                    nativeEditText.Typeface = font;
                }
            }
        }
    
        public class MyUsernameEntryRenderer : MyEntryRenderer
        {
            protected override void OnElementChanged (ElementChangedEventArgs<Entry> e)
            {
                base.OnElementChanged (e);
    
                if (e.OldElement == null) {
                    // lets get a reference to the native control
                    var nativeEditText = (global::Android.Widget.EditText) Control;
                    nativeEditText.Hint = "Username";
                    nativeEditText.SetHintTextColor (global::Android.Graphics.Color.White);
                    nativeEditText.TextSize = 18f;
                }
            }
        }
    
        public class MyPasswordEntryRenderer : MyEntryRenderer
        {
            protected override void OnElementChanged (ElementChangedEventArgs<Entry> e)
            {
                base.OnElementChanged (e);
    
                if (e.OldElement == null) {
                    // lets get a reference to the native control
                    var nativeEditText = (global::Android.Widget.EditText) Control;
                    nativeEditText.Hint = "Password";
                    nativeEditText.SetHintTextColor (global::Android.Graphics.Color.White);
                    nativeEditText.TextSize = 18f;
                }
            }
        }
    }