Xamarin.forms。 Android:按钮图像上的按钮外观

Xamarin.forms. Android: Button look on button image

我正在为 Android 和 iOS 制作一个应用程序。据我了解,无法在 Android 上的图像按钮上设置边框。在 iOS 上是可能的。

当我制作图像按钮时,它看起来不像 Android 上的按钮。我找不到给它一个按钮外观的方法。我只能在带有文字的按钮上找到它。

查看图片以便更好地理解。

有人可以帮忙吗?

这是我的代码(Xamarin 和 xaml 的新代码,所以它可能不是 "good looking" 代码)

    <Label  Text="Velg betalingsmetode:"
    TextColor="#002C6C"
    FontSize="Medium"
    VerticalOptions="Center"
    HorizontalOptions="Center"/>

    <Button x:Name="MobilePayButton"
    HeightRequest="100"
    WidthRequest="130"
    HorizontalOptions="Center"
    VerticalOptions="Center"
    BackgroundColor="White"
    BorderColor="#002C6C"
    BorderWidth="2"
    Clicked="ToPayConfirmationPage">

        <Button.Image>
            <OnPlatform x:TypeArguments="FileImageSource"
            Android="pay_MobilePaylogo2.png"
            iOS="Pay_MobilePaylogo2.png"/>
        </Button.Image>

    </Button>

要创建带边框的按钮,您需要创建自定义按钮:

  1. 在PCL项目中添加自定义按钮:

    public class ButtonWithBorder:Button
    {
    }
    
  2. 在Xaml中使用:

    <StackLayout
     VerticalOptions="Center">
       <local:ButtonWithBorder Clicked="ButtonWithBorder_Clicked">
        <local:ButtonWithBorder.Image>
            <OnPlatform x:TypeArguments="FileImageSource"
                Android="gluehbirne.png"
                iOS="Pay_MobilePaylogo2.png"/>
        </local:ButtonWithBorder.Image>
        </local:ButtonWithBorder>
    </StackLayout>
    
  3. 在 Android 项目中,为我们的自定义按钮创建一个 ButtonRenderer

    [assembly: ExportRenderer(typeof(ButtonWithBorder),typeof(ButtonWithBorderRenderer))]
    namespace ButtonWithBorderDemo.Droid
    {
        public class ButtonWithBorderRenderer:ButtonRenderer
        {
            protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Button> e)
            {
                base.OnElementChanged(e);
                Control.Background=ContextCompat.GetDrawable(this.Context, Resource.Drawable.button_bg);
    
            }
        }
    }
    
  4. 加一个button_bg.axmlResources\drawable:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:shape="rectangle">
      <corners android:radius="3dp" />
      <stroke android:width="5px" android:color="#000000" />
    </shape>
    

您将在 android 中得到一个带边框的按钮。