Xamarin Forms:Android 上忽略 ImageButton 边框

问题描述

我有一个包含一些 StackLayoutImageButton,按钮的 BorderWidth 为 5。

在 UWP 上,边框显示为缩放以适应内部的图像。在Android上,根本不出现边框,图像流入其空间。

UWP(正确):

UWP

安卓(无边框):

Android

我的 XAML 看起来像这样

  <StackLayout 
    x:Name="titlebar"
    Orientation="Horizontal"
    BackgroundColor="{x:DynamicResource TitleBarColor}">

    ...

    <ImageButton
      x:Name="menu"
      HeightRequest="25" WidthRequest="25"
      HorizontalOptions="End"
      BorderWidth="5"
      BackgroundColor="{x:DynamicResource TitleBarColor}"
      Source="{local:ImageResource CloudTest.Assets.icons.more_menu_white.png}"
      Clicked="OnMenuClicked" />
  </StackLayout>

解决方法

在 Android 中,我发现它只有在您同时设置 BorderWidthBorderColor(不能 Transparent)时才有效。

您也可以将 PaddingMargin 设置为 ImageButton 以达到效果。

<ImageButton
  x:Name="menu"
  HeightRequest="25" WidthRequest="25"
  HorizontalOptions="End"
  Padding ="5"  //or Margin ="5"
  BackgroundColor="{x:DynamicResource TitleBarColor}"
  Source="{local:ImageResource CloudTest.Assets.icons.more_menu_white.png}"
  Clicked="OnMenuClicked" />

更新(黄色区域是您的 ImageButton):

使用Margin时,指控件与同级控件之间的距离:

enter image description here

Padding,指的是控件的内部内容,比如文字/图片距离控件的边距

enter image description here

所以当你使用内边距时,你会看到图像内部的空间,当你使用边距时,你会看到图像外的空间。