首页
学习
活动
专区
工具
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>
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【愚公系列】2023年11月 Winform控件专题 LinkLabel控件详解

在 Winform ,可以通过“工具箱”的 LinkLabel 控件添加到窗体。在设计时,可以设置控件的属性,文本内容、字体、颜色、链接颜色、字体样式等。...例如,以下代码展示了如何在 LinkClicked 事件打开系统默认的浏览并跳转到指定的 URL:private void linkLabel1_LinkClicked(object sender,...默认情况下,LinkLabel链接文本的颜色为蓝色,如果需要更改,可以通过设置LinkColor属性来实现。...以下是使用LinkLabel控件Image属性的步骤:将LinkLabel控件添加到窗体。打开窗体设计的属性窗格。在属性窗格,找到Image属性,并单击其旁边的按钮,以打开图像选择对话框。...最后,为了完善用户体验,可以将窗体类的Load事件处理方法添加一些初始化代码,将Label控件的Visible属性设置为false,在启动应用程序时隐藏提示信息。

59311

Xamarin.Forms 按钮样式 圆角按钮

Xamarin 可以通过 CornerRadius 设置按钮使用圆角 在 Xamarin 可以方便进行样式定义或不进行定义样式只修改属性而改变外观,如按钮的圆角可以通过 CornerRadius...属性设置 按钮使用圆角时,如果更改边框的颜色建议同时更改边框的宽度和边框颜色,在不同的平台下默认的样式不相同的,如果想要保持各个平台统一的外观,虽然这样不是好主意,那么请设置固定的值,而不是采用默认值...<Button Font="Large" Text="<em>选取</em>PPT文件" HorizontalOptions="Center" CornerRadius...因为在 UWP BorderWidth 是 2 而在 Android 是 0 也就是此时如果干掉了背景颜色,将看不到按钮的圆角 ?...Transparent 属性 如果需要让按钮点击时呈现有趣的效果,可以通过 VisualStateManager 的方式定义 <Button Font="Large" Text="<em>选取</em>

3.2K20
  • Visual Studio 2017 15.7 下的.NET Core

    其他主要更新 我们增加了对更改安装位置的支持. 在开始更新之前, 可以全部保存挂起的更改。 在安装过程, "更新" 对话框为您提供了有关update的更多详细信息。...NET 重构, 转换for到-foreach并使私有字段readonly. 我们添加了将 ASP.NET Core应用程序发布到没有容器的应用程序服务 Linux的能力....我们根据流行的开源 pydevd 调试添加了我们的Python调试的下一个版本。 文稿 2.8包含在 Visual Studio 版本15.7 。...Xamarin 的 Visual Studio 工具可以自动安装缺少的 android API 级别, Xamarin. android 项目。 Xamarin....窗体 xaml 编辑为条件 xaml 提供智能感知和快速修复。 我们在Visual Studio 生成工具添加了对 Azure、UWP 和其他项目类型的支持。

    3.2K80

    Visual Studio 2017 15.7 下的.NET Core

    其他主要更新 我们增加了对更改安装位置的支持. 在开始更新之前, 可以全部保存挂起的更改。 在安装过程, "更新" 对话框为您提供了有关update的更多详细信息。...NET 重构, 转换for到-foreach并使私有字段readonly. 我们添加了将 ASP.NET Core应用程序发布到没有容器的应用程序服务 Linux的能力....我们根据流行的开源 pydevd 调试添加了我们的Python调试的下一个版本。 文稿 2.8包含在 Visual Studio 版本15.7 。...Xamarin 的 Visual Studio 工具可以自动安装缺少的 android API 级别, Xamarin. android 项目。 Xamarin....窗体 xaml 编辑为条件 xaml 提供智能感知和快速修复。 我们在Visual Studio 生成工具添加了对 Azure、UWP 和其他项目类型的支持。

    3K50

    C# winform ——界面美化技巧

    首先,我们先来实现主界面的扁平化 此处分为两个步骤,第一步是更改winform自带的MainForm窗体属性,第二步是添加窗体事件。...将主窗体FormBorderStyle更改为None,这样就得到了一个无边框的窗体(winform自带边框太丑。。)...调节背景色,建议找到自己喜欢的颜色,然后使用取色(我用的是按键精灵自带的取色板)取得想要的RGB参数,输入到BackColor属性之中 在主窗体的Mouse_Down添加如下事件,实现窗体随意拖动:...因为进度条ProgressBar由于是虚拟模式下运行的,所以调整BackColor和ForeColor都不会产生效果,它仍然会根据windows的主题来更改,为了使其按照我们想要的颜色来显示,我们可以将虚拟模式的命令去掉..., 2, bounds.Width, bounds.Height);//此处完成前景重绘,依旧按照Progressbar的属性设置前景色 } } } 完成以上步骤之后,我们如何在界面插入自己的进度条呢

    5.6K41

    C# winform 界面美化技巧(扁平化设计)

    此处分为两个步骤,第一步是更改winform自带的MainForm窗体属性,第二步是添加窗体事件。...将主窗体FormBorderStyle更改为None,这样就得到了一个无边框的窗体(winform自带边框太丑。。)...调节背景色,建议找到自己喜欢的颜色,然后使用取色(我用的是按键精灵自带的取色板)取得想要的RGB参数,输入到BackColor属性之中 在主窗体的Mouse_Down添加如下事件,实现窗体随意拖动...因为进度条ProgressBar由于是虚拟模式下运行的,所以调整BackColor和ForeColor都不会产生效果,它仍然会根据windows的主题来更改,为了使其按照我们想要的颜色来显示,我们可以将虚拟模式的命令去掉...2, 2, bounds.Width, bounds.Height);//此处完成前景重绘,依旧按照Progressbar的属性设置前景色 } } } 完成以上步骤之后,我们如何在界面插入自己的进度条呢

    6.9K30

    官宣!微软跨平台 UI 框架 .NET MAUI 6 正式发布!

    从这些对话,我们设计了 .NET MAUI 可访问性语义服务来控制: 描述、提示和标题级别等属性 聚焦 屏幕阅读 自动化属性 阅读 .NET MAUI 文档中有关可访问性语义服务的更多信息。...Android 会在文本字段下方绘制下划线,开发人员通常希望删除该下划线。...因为您的 Blazor 组件在 .NET 进程编译和执行,所以它们不限于 Web 平台,并且可以利用任何本机平台功能,例如通知、蓝牙、地理位置和传感、文件系统等等。...NET MAUI 的 UI 控件在本机平台控件上实现了一种精简的、解耦的处理程序映射模式。这减少了 UI 渲染的层数,并简化了控件定制。....NET MAUI 的布局已被设计为使用一致的管理模式来优化度量并安排循环以更快地呈现和更新您的 UI。

    4.1K20

    .Net语言 APP开发平台——Smobiler学习日志:如何快速实现快递信息流的效果

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一、目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的“...Smobiler Components”拖动一个NodeView控件到窗体界面上 2.修改NodeView控件的属性 a.ItemBackColor属性 设置NodeViewItem的背景色,将该属性设置为...即背景全透明,如图2; c.ItemDefaultIcon属性 设置NodeViewItem默认的icon,将该属性设置为“icon1”,如图3; 图1 图2 图3 d.Items属性 打开集合编辑,...并点击"添加",Date属性(NodeViewItem的时间),DateColor属性(时间的颜色),Icon属性(NodeViewItem的Icon图像资源),Image属性(NodeViewItem...的图片资源),SubText属性(NodeViewItem的详细描述文本),SubTextColor属性(SubText的文本颜色),Text属性(NodeViewItem的标题文本),TextColor

    59420

    【愚公系列】2023年11月 Winform控件专题 Button控件详解

    以下是使用Button控件的一些常见操作:创建Button控件在Visual Studio的设计,可以直接从工具箱拖拽Button控件到窗体上创建。...1.2 LocationLocation属性表示控件在其父容器的左上角的位置。使用Location属性可以更改控件在容器的位置。...使用该属性,可以设置任何图像作为窗体的背景。具体操作方法如下:1.打开Winform窗体设计,选择需要设置背景图像的窗体。...您可以更改ImageBeforeText为您所需的任何其他值。1.15 UseMnemonicUseMnemonic属性是指一个控件在显示文本时,是否将快捷键表示为下划线的形式。...默认情况下,UseMnemonic属性的值为true,即显示下划线。如果将它的值设置为false,则不会显示下划线。使用方法:在设计视图中选中需要设置的控件。

    1.7K12

    C#学习笔记—— 常用控件说明及其属性、事件

    (3)TextChanged事件:该事件在Text属性值更改时发生。无论是通过编程修改还是用户交互更改文本框的 Text属性值,均会引发此事件。...的 参数RichTextBoxFinds指定如何在控件执行文本搜索,其取值及其含义如表9-4 所示。...(2)Interval属性:用来设置定时两次Tick事件发生的时间间隔,以毫秒为单位。它的值设置为500,则将每隔0.5秒发生一个Tick事件。...(6)ShowEffects 属性:用来获取或设置一个值,该值指示对话框是否包含允许用户指定删除线、下划线和文本颜色选项的控件。...如果对话框包含设置删除线、下划线和文本颜色选项的控件,属性值为 true,反之,属性值为false。默认值为true。

    9.7K20

    【愚公系列】2023年11月 Winform控件专题 Label控件详解

    ;myLabel.Location = new Point(10, 10); // 设置Label控件在窗体的位置this.Controls.Add(myLabel); // 将Label控件添加到窗体...例如,在窗体更改光标:// 更改窗体光标this.Cursor = Cursors.Hand;1.10 Dock在Winform,Dock属性用于设置控件相对于其容器的停靠方式。...记住AutoSize为true时2.常用场景WinformLabel控件常用场景有:显示文字:Label控件可以用于显示文本信息,窗口标题、提示信息、作者信息等。...以下是一个具体的案例,用于说明如何在Winform中使用Label控件:在Visual Studio创建一个新的Winform项目。在Form添加一个Label控件。...运行程序,Label控件将显示在窗体

    82911

    Xamarin.Form 5.0: 新功能和控件以及调试改进

    第一个示例与新版本的 XAML 热重新加载有关,允许开发人员快速修改和预览其更改。...根据开发人员社区的反馈,现在可以 Xamarin.Forms 与UWP 应用一起使用热重载和热重启,并部分刷新修改后的页面(这是 Visual Studio 调试设置的可配置选项)。 ?...其中一些已经在去年的预览: 画笔:使用纯色、线性渐变和径向渐变来着色应用程序 UI 的颜色区域; 形状:绘制形状,椭圆、线、面、折线和矩形; 路径:绘制自定义形状或设计。...例如,下图中的单选按钮; 旋转木马视图:与可视化项目(PeakAreaInsets 的可视化状态管理)相关的新改进,该更改预览上一项或下一项的一部分,并建议用户滚动方向。...它在移动应用程序内外都有效,特别是当它有一个双屏幕, Surface Duo 时。 ?

    3.3K20

    .Net语言 APP开发平台——Smobiler学习日志:如何快速实现按钮组功能

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一、目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的“Smobiler...Components”拖动一个ButtonGroup控件到窗体界面上 2.修改ButtonGroup控件的属性 a.AllowEdit属性 获取或设置是否支持长按控件进入编辑模式,将该属性设置为“True...”,如图1; 在该属性为为“True”时,且Buttons属性的Edit属性为“True”,才能实现长按控件进入编辑模式,即支持删除按钮 b.Buttons属性 打开集合编辑,并点击"添加",Edit...)、BorderColor属性(控件边框颜色)、SelectBackColor属性(控件选择状态背景色)、SelectForeColor属性(控件选择状态文本颜色)和SelectBorderColor属性...图12 e.Location属性 让控件显示在合适的位置,如图13; f.RowButtonCount属性 设置单行按钮的数量,该属性默认设置为“0”,如图14; 当该属性设置为“0”时,控件会根据当前

    89140

    .NET MAUI 性能提升(上)

    当我们采用这个更改时,我们知道会对模板的性能造成影响。 几个不同团队的合作才有了今天的成就。...这是一个很好的方法来诊断修剪/链接问题。 查看xamarin-android#6311了解关于这个改进的详细信息。...在我们的测试,调用JNI来获取Java数组元素,性能比字符串差。Split和Span的新用法。对于如何在未来的.NET版本重新构建它,我们有一些想法。...新代码显著改进了从Java调用的任何c#构造函数,因此这个特殊的更改改进的不仅仅是.NET MAUI。除了.NET 6之外,针对当前客户Xamarin. android的最新版本也附带了这一更改。...我们正在研究如何在未来的.NET版本改进这一点。 查看xamarin-android#6657和xamarin-android#6707了解这个改进的详细信息。

    8.6K20

    dotnet Multi-platform App UI 多平台应用 UI 框架简介

    在 .NET 5 微软统一了整个 .NET 平台,将 .NET Core 和 Mono 以及基于 Mono 的 Xamarin 放在一起,于是就可以使用相同的一个 BCL 基础库和 SDK 工具链 当咱在考虑如何在...很多年以来,都有很多商业公司,这个链接 https://dotnet.microsoft.com/apps/xamarin/customers 列举出来的公司,都在使用 Xamarin 用 .NET...这意味着您只需单击一下鼠标,便可以轻松地将其部署到所需的任何目标,包括台式机,仿真,模拟或物理设备。...无论是使用哪个版本的 IDE Visual Studio 2019,Visual Studio for Mac甚至是 Visual Studio Code 工具,.NET MAUI 将在所有这些版本可用...此后的所有工作都将转移到.NET 6 Xamarin.Forms将于今年晚些时候发布新的主版本,并继续在2021年11月通过.NET 6 GA每6周发布次要版本和服务版本。

    5.2K20

    译 | .NET Multi-platform App UI 多平台应用 UI 框架简介

    在 .NET 5 微软统一了整个 .NET 平台,将 .NET Core 和 Mono 以及基于 Mono 的 Xamarin 放在一起,于是就可以使用相同的一个 BCL 基础库和 SDK 工具链 当咱在考虑如何在...很多年以来,都有很多商业公司,这个链接 https://dotnet.microsoft.com/apps/xamarin/customers 列举出来的公司,都在使用 Xamarin 用 .NET...这意味着您只需单击一下鼠标,便可以轻松地将其部署到所需的任何目标,包括台式机,仿真,模拟或物理设备。...无论是使用哪个版本的 IDE Visual Studio 2019,Visual Studio for Mac甚至是 Visual Studio Code 工具,.NET MAUI 将在所有这些版本可用...此后的所有工作都将转移到.NET 6 Xamarin.Forms将于今年晚些时候发布新的主版本,并继续在2021年11月通过.NET 6 GA每6周发布次要版本和服务版本。

    4.8K10

    Tkinter教程(每天半小时,3天彻底掌握Tkinter)day1

    python窗体居中设置 护眼色_颜色名称_16进制色值_RGB色值 主窗体设置 窗口常用方法 python获取电脑屏幕的大小 python获取窗口的大小,必须先刷新一下屏幕 python设置窗体不能被拉伸...Tkinter 编写的程序,也称为 GUI 程序,GUI (Graphical User Interface)指的是“图形用户界面”,它是计算机图形学(CG)的一门分支,主要研究如何在计算机中表示图形,...Tkinter 使用纯 Python 语言开发,与 C/C++ 开发的 Qt 框架相比,Tkinter 有自身的局限性,比如性能、功能丰富程度等都不及 Qt,因此它只适合开发一些简单的程序,比如计算的界面...比如,它提供了十多种不同类型的窗口控件、窗口布局管理、事件处理机制等,加之其开发效率高、代码简洁易读, Tkinter 自问世以来,备受大家青睐。...text文本,通常会使用tk.Lable设置,在参数能看到,bg是北京颜色,fg是文字颜色,font的参数里面是字体设置。

    5.2K20

    CSS 删除线:在 CSS 中使用文本装饰和划线

    除了下划线、斜体和粗体,CSS 删除线也是通过 HTML 元素传达信息的好方法。今天,我们将看看如何在CSS或 HTML 中使用删除线(称为划线),为什么要使用它,以及什么时候不应该使用它。...例如,可以在列表中使用划线文本:• 启动服务。• 上传 HTML。• 测试 CSS。在上面的列表,你知道服务已经启动,HTML 已经上传,但 CSS 仍然需要测试。...• 文本装饰颜色。设置由 text-decoration-line 添加的线条的颜色。这些属性可以更改放置在文本上的线条、样式和颜色,例如蓝色下划线。如何使用删除线 HTML 标记?...从那里,您可以通过更改一行而不是必须更改每个独立的 H2,从每个 H2 删除文本装饰罢工。如何删除 CSS 删除线?...例如,您可以使线条变粗、更改颜色或使其闪烁。您还可以使用 CSS 在文本上方或下方添加一行。如果您想强调某些内容已被划掉,这会很有用。但是,您应该只在必要时才使用删除线文本。

    1.5K00

    Xamarin 社区团队发布了的两个新的工具包 MAUI 兼容版本

    这些库确保你可以在 .NET MAUI 应用程序访问 Xamarin.CommunityToolkit 的所有功能,而不会破坏更改,从而帮助你更轻松地迁移到 .NET MAUI。...您可以只注册实际需要的渲染,也可以注册 Xamarin 社区工具包内的所有渲染。看看下面的代码片段如何做到这两点。...非渲染控件 有些控件不需要(单独的)渲染,即 Shield。目前不支持这些控件。我们有一个 标记应该有效 该包应该可以正常工作,因为它不依赖于渲染。...我们确实使它与所有当前的 .NET MAUI 更改和命名空间兼容,因此您可以像以前一样继续享受标记扩展。 其他已知问题和报告问题 在 .NET MAUI ,对象发生了变化。...每当您遇到 a 时,您可能想尝试将控件的所有颜色属性设置为显式值,看看是否能解决问题。如果没有,请告诉我们您所看到的内容,以便我们查看。

    2.3K10
    领券