Xamrin.Forms Entry Cell How to change font size fo

2020-07-28 02:56发布

问题:

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" };

回答1:

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;
            }
        }
    }
}


回答2:

Unfortunately, no.

There is no API in Forms to change the Placeholder font size. Instead, you could create your own custom control to do this, or use a custom renderer to modify the placholder in the native view.