MAUI - 如何更改 Span 的颜色或装饰

问题描述 投票:0回答:1

我使用

FormattedString
创建了一个超链接。如何添加效果,例如悬停时添加下划线或更改访问链接的颜色?到目前为止我已经执行了以下代码:

var formattedString = new FormattedString();
var link = "http://www.google.com/";
var hyperlinkSpan = new Span { Text = "Click me"};
hyperlinkSpan.GestureRecognizers.Add(new TapGestureRecognizer
{
    Command = new Command(async () =>
    {
        await Launcher.OpenAsync(new Uri(link)).ConfigureAwait(true);
    })
});
formattedString.Spans.Add(hyperlinkSpan);

我可以使用

Span
TextDecorations="Underline"
添加下划线,但在这种情况下,链接始终带有下划线。我希望它仅在悬停时才带有下划线。

xamarin maui
1个回答
0
投票

.NET 多平台应用程序 UI (.NET MAUI) 指针手势识别器 检测指针何时进入、退出以及在视图内移动。但是,当您向

Span
添加指针识别器时,它会抛出错误,“Span 不支持PointerGestureRecognizer”

目前,

PointerGestureRecognizer
适用于 Label。也许您可以在标签上添加手势,并在悬停标签时触发属性更改(不是跨度)。

        mylabel.GestureRecognizers.Add(new PointerGestureRecognizer
        {
            PointerEnteredCommand = new Command(() =>
            {
                hyperlinkSpan.TextColor = Colors.Blue;
                hyperlinkSpan.TextDecorations = TextDecorations.Underline;
            }),
            PointerExitedCommand = new Command(() =>
            {
                hyperlinkSpan.TextColor = Colors.Black;
                hyperlinkSpan.TextDecorations = TextDecorations.None;
            })
        });  

或者只是使用 Label 而不是 Span 与 StackLayout 或 Grid 来管理 UI。

顺便说一句,您可以考虑在 GitHub 上为此提出功能请求。

© www.soinside.com 2019 - 2024. All rights reserved.