Saltar al contenido

¿Es posible cambiar el color de la línea de abajo/Borde de un cuadro de texto (Entrada)?

Este post fue aprobado por nuestros expertos para asegurar la veracidad de nuestro post.

Solución:

puede usar un renderizador personalizado que afectará a todas las entradas,

aquí está para android:

[assembly: ExportRenderer(typeof(Entry), typeof(MyEntryRenderer))]
namespace Android.MyRenderers

    public class MyEntryRenderer : EntryRenderer
    
        protected override void OnElementChanged(ElementChangedEventArgs e)
        
            base.OnElementChanged(e);

            if (Control == null     
    

y iOS:

[assembly: ExportRenderer (typeof(Entry), typeof(MyEntryRenderer))]
namespace iOS.MyRenderers

    public class MyEntryRenderer : EntryRenderer
    
        private CALayer _line;

        protected override void OnElementChanged(ElementChangedEventArgs e)
        
            base.OnElementChanged (e);
            _line = null;

            if (Control == null 
    

no estoy seguro acerca de la solución de Windows en este

Tuve el mismo problema y solo cambié el colorAccent valor en estilos.xml (en Xamarin.Android proyecto) cambiará el color del cursor y el borde inferior de un Entry campo.

#BA55D3

Dado que tengo las páginas de contenido con un color de fondo y los cuadros de diálogo con otro, usar Estilos para especificar el color de la barra inferior es una respuesta totalmente incorrecta. Y como el OP solo preguntó por Android, esto es solo Android…

Uso un renderizador personalizado para establecer el color de la barra inferior igual que el color del texto. Tiene que tanto ElementChanged como PropertyChanged.

[assembly: ExportRenderer(typeof(Xamarin.Forms.Entry), typeof(CustomEntryRenderer))]
namespace XamFormsConnect.Droid

    public class CustomEntryRenderer : EntryRenderer
    
        protected override void OnElementChanged(ElementChangedEventArgs e)
        
            base.OnElementChanged(e);

            if (Control != null && e.NewElement != null)
            
                var entry = (Xamarin.Forms.Entry)e.NewElement;
                if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
                    Control.BackgroundTintList = ColorStateList.ValueOf(entry.TextColor.ToAndroid());
                else
                    Control.Background.SetColorFilter(entry.TextColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
            
        

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

            if (e.PropertyName == "TextColor")
            
                var entry = (Xamarin.Forms.Entry)sender;
                if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
                    Control.BackgroundTintList = ColorStateList.ValueOf(entry.TextColor.ToAndroid());
                else
                    Control.Background.SetColorFilter(entry.TextColor.ToAndroid(), PorterDuff.Mode.SrcAtop);
            
        
    

Al final de la web puedes encontrar las acotaciones de otros sys admins, tú además eres capaz dejar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *