【问题标题】:Xamarin Forms: ImageButton border ignored on AndroidXamarin Forms:Android 上忽略的 ImageButton 边框
【发布时间】:2021-04-09 20:32:04
【问题描述】:

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

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

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>

【问题讨论】:

  • 你检查过this吗?
  • 我只是看了一下。我不确定它是如何相关的。那是使用 Android SDK,而不是 Xamarin Forms。

标签: xaml xamarin.forms imagebutton


【解决方案1】:

在 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时,指的是控件与同级控件的距离:

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

因此,当您使用填充时,您将看到图像内部的空间,而当您使用边距时,您将看到图像外部的空间。

【讨论】:

  • 填充:是的,这让我更接近了。谢谢 !现在图标周围有一个空格,但比例错误。测量截图,我现在有 7 px 的边框和 46 的图标。以百分比表示,即 12、76、12。但是,我指定的应该是(以百分比表示)20、60、20(它在 UWP 上)。你有什么进一步的想法吗?
  • 我做了另一个实验,有边距。我将边距设置为 5,将图像 HeightRequest 更改为 15,并将 BackgroundColor 设置为深蓝色。有效 !多么笨拙的解决方法,但我很高兴您建议使用非透明背景。
  • 实际上,它也适用于透明背景。因此,显然 Margin 有效,但 Padding 和 BorderWidth 无效。
  • @PeriHartman 是的,我在上面的更新中给出了解释。
  • 我现在遇到的问题是,使用 Margin 时,它不会响应边缘区域中的点击。这会导致质量较低的用户体验。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多