首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Xamarin窗体中更改选取器下划线颜色

在 Xamarin.Forms 中,Picker 控件的下划线颜色(即 Entry 控件的下划线颜色)通常是由平台特定的渲染器控制的。要更改 Picker 下划线的颜色,你需要创建一个自定义渲染器。

以下是如何在 Android 和 iOS 平台上实现这一点的示例。

1. 创建自定义 Picker 控件

首先,在你的 Xamarin.Forms 项目中创建一个自定义 Picker 控件。

CustomPicker.cs

代码语言:javascript
复制
using Xamarin.Forms;

namespace YourNamespace
{
    public class CustomPicker : Picker
    {
    }
}

2. 创建 Android 渲染器

在你的 Android 项目中,创建一个自定义渲染器来更改 Picker 下划线的颜色。

CustomPickerRenderer.cs

代码语言:javascript
复制
using Android.Content;
using Android.Graphics.Drawables;
using YourNamespace;
using YourNamespace.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(CustomPicker), typeof(CustomPickerRenderer))]
namespace YourNamespace.Droid
{
    public class CustomPickerRenderer : PickerRenderer
    {
        public CustomPickerRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                // 更改下划线颜色
                var gd = new GradientDrawable();
                gd.SetColor(global::Android.Graphics.Color.Transparent);
                this.Control.SetBackground(gd);

                // 设置下划线颜色
                Control.BackgroundTintList = Android.Content.Res.ColorStateList.ValueOf(global::Android.Graphics.Color.Red);
            }
        }
    }
}

3. 创建 iOS 渲染器

在你的 iOS 项目中,创建一个自定义渲染器来更改 Picker 下划线的颜色。

CustomPickerRenderer.cs

代码语言:javascript
复制
using UIKit;
using YourNamespace;
using YourNamespace.iOS;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(CustomPicker), typeof(CustomPickerRenderer))]
namespace YourNamespace.iOS
{
    public class CustomPickerRenderer : PickerRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                // 更改下划线颜色
                Control.BorderStyle = UITextBorderStyle.None;

                var bottomBorder = new UIView();
                bottomBorder.BackgroundColor = UIColor.Red;
                bottomBorder.TranslatesAutoresizingMaskIntoConstraints = false;

                Control.AddSubview(bottomBorder);

                bottomBorder.LeadingAnchor.ConstraintEqualTo(Control.LeadingAnchor).Active = true;
                bottomBorder.TrailingAnchor.ConstraintEqualTo(Control.TrailingAnchor).Active = true;
                bottomBorder.BottomAnchor.ConstraintEqualTo(Control.BottomAnchor).Active = true;
                bottomBorder.HeightAnchor.ConstraintEqualTo(1.0f).Active = true;
            }
        }
    }
}

4. 使用自定义 Picker 控件

现在,你可以在 XAML 或 C# 代码中使用自定义的 CustomPicker 控件。

MainPage.xaml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:YourNamespace"
             x:Class="YourNamespace.MainPage">

    <StackLayout>
        <local:CustomPicker Title="Select an item">
            <Picker.Items>
                <x:String>Item 1</x:String>
                <x:String>Item 2</x:String>
                <x:String>Item 3</x:String>
            </Picker.Items>
        </local:CustomPicker>
    </StackLayout>
</ContentPage>
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券