c# - Android 按钮边框颜色渐变

标签 c# xaml xamarin xamarin.forms

我正在尝试创建一个这样的戒指: button border color (credits)


这是我的尝试:

                <Ellipse StrokeThickness="50"
                     WidthRequest="300"
                     HeightRequest="300"
                     Grid.Column="0">
                <Ellipse.Stroke>
                    <LinearGradientBrush>
                        <GradientStop Color="Red"
                                      Offset="0.1" />
                        <GradientStop Color="DarkBlue"
                                      Offset="1.0" />
                    </LinearGradientBrush>
                </Ellipse.Stroke>
            </Ellipse>

ellipse

这很好,但我无法将文本添加到中心。此外,这个洞必须是可点击的。


                    <Button Text="42"
                        FontSize="50"
                        TextColor="Black"
                        BorderColor="Chartreuse"
                        Background="Transparent"
                        CornerRadius="300"
                        WidthRequest="300"
                        HeightRequest="300"
                        BorderWidth="50">
                </Button>

button

我认为正确的方法是使用按钮。不幸的是,BorderColor 不接受上面这样的渐变。

我对框架控件进行了相同的尝试,但它也不接受 BorderColor 中的渐变!

我找到了一些使用自定义渲染器的 iOS 和 UWP 示例,但没有找到 Android 的示例。 他们还硬编码了渐变,这是我不想要的。我希望能够根据中间的值更改渐变颜色。

也许有人可以引导我走向正确的方向?

最佳答案

您可以使用网格将LabelEllipse重叠,要可点击,您可以使用GestureRecognizers:

  <Grid HorizontalOptions="Center">
       <Grid.GestureRecognizers>
                <TapGestureRecognizer Tapped="Button_Clicked"/>
        </Grid.GestureRecognizers>
            <Label Text="57" FontAttributes="Bold" FontSize="20" TextColor="Black" VerticalOptions="Center" HorizontalOptions="Center"/>
            <Ellipse StrokeThickness="15"
                     WidthRequest="150"
                     HeightRequest="300">
                <Ellipse.Stroke>
                    <LinearGradientBrush>
                        <GradientStop Color="Red"
                                      Offset="0.1" />
                        <GradientStop Color="DarkBlue"
                                      Offset="1.0" />
                    </LinearGradientBrush>
                </Ellipse.Stroke>
            </Ellipse>
        </Grid>

enter image description here

要根据中间的值更改颜色,请使用带有属性的绑定(bind)并管理代码中的逻辑。

但是看看您要创建的内容看起来有点复杂,如果您正在寻找一些高级/复杂的 UI 控件,那么最好使用 skiasharp .

关于c# - Android 按钮边框颜色渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70536723/

相关文章:

c# - 定义 "custom"整数类型?

c# - MemoryStream 写入数据的地方

wpf - 包含多个项目的 HeaderTemplate

c# - 在 WPF 中鼠标悬停时如何更改组合框边框的颜色?

c# - SQLite 选择 GUID 中的 ID

java - Java 版本的 ApkSignerTool 问题

android - Xamarin 上出现过时的 'Android SDK Build-tools' 错误

c# - 返回包含 2 个子类的 IQueryable

c# - 另一个域上的 ASP.NET 应用程序可以与另一个域上的 Mysql 数据库集成吗

c# - Xamarin Forms 按钮单击事件在运行时崩溃