Button Xamarin.Forms XAML圆形按钮

Button Xamarin.Forms XAML圆形按钮,button,xamarin,xamarin.forms,Button,Xamarin,Xamarin.forms,我正试图在我的Xamarin.Forms应用程序中放置一个圆形按钮,但我做不到 我阅读了一些关于按钮的自定义控制器的内容,但在Xamarin.Forms中没有找到任何关于圆形按钮的文档 有人知道怎么做吗?我正在构建一个Android和iOS应用程序。您可以使用BorderRadius属性在按钮上创建圆角 <Button Text="BlueButton" BorderColor="Blue" BorderRadius="5" BorderWi

我正试图在我的Xamarin.Forms应用程序中放置一个圆形按钮,但我做不到

我阅读了一些关于按钮的自定义控制器的内容,但在Xamarin.Forms中没有找到任何关于圆形按钮的文档


有人知道怎么做吗?我正在构建一个
Android
iOS
应用程序。

您可以使用BorderRadius属性在按钮上创建圆角

<Button Text="BlueButton"
        BorderColor="Blue"
        BorderRadius="5"
        BorderWidth="2"/>

如果您想使用圆形按钮,请使用以下代码。高度和宽度必须相同,并且与边界半径成比例

<Button HorizontalOptions="Fill" VerticalOptions="Fill" Text="+">              
            <Button.WidthRequest>
              <OnIdiom x:TypeArguments="x:Double" Phone="60" Tablet="80" />
            </Button.WidthRequest>
            <Button.HeightRequest>
              <OnIdiom x:TypeArguments="x:Double" Phone="60" Tablet="80" />
            </Button.HeightRequest>
            <Button.BorderRadius>
              <OnIdiom x:TypeArguments="x:Int32" Phone="30" Tablet="40" />
            </Button.BorderRadius>
 </Button>

如果在手机和平板电脑上使用相同的尺寸,您可以忽略平板电脑的不同尺寸

注意:这在Windows上不起作用。你会得到一个方形按钮

在Android中,如果你的
main活动
继承自
AppCompact
,你也必须添加。

试试这个C代码


如果您不想直接使用渲染器,并且不介意Windows Phone上没有圆形按钮,则可以使用以下代码:

private const int BUTTON_BORDER_WIDTH = 1;

// Normal button height
//private const int BUTTON_HEIGHT = 44;
//private const int BUTTON_HEIGHT_WP = 72;
//private const int BUTTON_HALF_HEIGHT = 22;
//private const int BUTTON_HALF_HEIGHT_WP = 36;
//private const int BUTTON_WIDTH = 44;
//private const int BUTTON_WIDTH_WP = 72;

// Large button Height
private const int BUTTON_HEIGHT = 88;
private const int BUTTON_HEIGHT_WP = 144;
private const int BUTTON_HALF_HEIGHT = 44;
private const int BUTTON_HALF_HEIGHT_WP = 72;
private const int BUTTON_WIDTH = 88;
private const int BUTTON_WIDTH_WP = 144;

public RoundButtonPage()
{
    var button = new Button
    {
        HorizontalOptions = LayoutOptions.Center,
        BackgroundColor = Color.Accent,
        BorderColor = Color.Black,
        TextColor = Color.White,
        BorderWidth = BUTTON_BORDER_WIDTH,
        BorderRadius = Device.OnPlatform(BUTTON_HALF_HEIGHT, BUTTON_HALF_HEIGHT, BUTTON_HALF_HEIGHT_WP),
        HeightRequest = Device.OnPlatform(BUTTON_HEIGHT, BUTTON_HEIGHT, BUTTON_HEIGHT_WP),
        MinimumHeightRequest = Device.OnPlatform(BUTTON_HEIGHT, BUTTON_HEIGHT, BUTTON_HEIGHT_WP),
        WidthRequest = Device.OnPlatform(BUTTON_WIDTH, BUTTON_WIDTH, BUTTON_WIDTH_WP),
        MinimumWidthRequest = Device.OnPlatform(BUTTON_WIDTH, BUTTON_WIDTH, BUTTON_WIDTH_WP),
        Text = "ClickMe"
    };

    var stack = new StackLayout
    {
        VerticalOptions = LayoutOptions.Center,
        Orientation = StackOrientation.Vertical,
        Children = { button },
    };

    Padding = new Thickness(10, Device.OnPlatform(20, 0, 0), 10, 5);
    Content = stack;
}
它将制作一个圆角按钮。要使按钮完全圆,只需将边界半径设置为高度的一半

唯一要记住的是,你的按钮必须足够大才能容纳内容。您可以理解我在顶部注释/取消注释这两个常量部分的意思。第一组适用于数字或字母,第二组适用于短语,如“ClickMe”


同样,这使用平台的本机按钮,由于WP不支持边框半径,WP上的所有按钮都将是矩形的,因此您需要使用James在CircularImage控件中显示的技术。

如果您想要图像按钮,可以将其用于Xamarin表单

或者像这样的用于Xamarin表单的ImageCircle,并添加TapGestureRecognitor。

要创建圆形(圆形)按钮,请尝试以下

  <Button WidthRequest = 100,
            HeightRequest = 100,
            BorderRadius = 50 />


通常,WidthRequest=x,HeightRequest=x,BorderRadius=x/2

属性的xaml一侧为ConerRadius,例如:

<Button 
    CornerRadius="20"
    Text="{i18n:Translate Cancel}"
    Command="{Binding CancelarCommand}" 
    BackgroundColor="{StaticResource ButtonBackgroundColorbuscar}" 
    TextColor="White" /> 

您需要使用
拐角半径
而不是
边界半径
,因为:

“Button.BorderRadius”已过时:“BorderRadius已于过期。” 2.5.0. 请改用拐角半径。”


示例:
XButton.CornerRadius=5

当前版本的Xamarin表单中没有
BorderRadius
属性。另一种选择是
CornerRadius
属性

例如:

<Button Text="Submit"
 FontSize="Large"
 TextColor="White"
 BackgroundColor="Green" 
 CornerRadius="100"

嘿!!谢谢你的回答。但当我运行它时,仍然是一个矩形。因为Xamarin在它上面。idk how.如果您在Android上遇到问题,请参阅以下内容:更新:BorderRadius现在已过时-请改用CornerRadius。xaml呢?有可能吗?我使用XAML,如何使用?我建议您将我的答案作为接受答案,因为它是最新的,这是有效的,但使用HorizontalOptions=“Fill”,而不是HorizontalOptions=“Center”
<Button Text="Submit"
 FontSize="Large"
 TextColor="White"
 BackgroundColor="Green" 
 CornerRadius="100"