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>
要创建带边框的按钮,您需要创建自定义按钮:
在PCL项目中添加自定义按钮:
public class ButtonWithBorder:Button
{
}
在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>
在 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);
}
}
}
加一个button_bg.axml
到Resources\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 中得到一个带边框的按钮。
我正在为 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>
要创建带边框的按钮,您需要创建自定义按钮:
在PCL项目中添加自定义按钮:
public class ButtonWithBorder:Button { }
在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>
在 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); } } }
加一个
button_bg.axml
到Resources\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 中得到一个带边框的按钮。