Xamarin按钮上的图像填充选项,在Android上看到溢出而不是iOS

时间:2017-03-01 17:14:43

标签: ios xaml xamarin xamarin.forms

我们有一些带有图像的按钮,我们只看到图像在iOS上正确缩放。在Android上,图像溢出按钮边界,因此我们基本上得到了图像的放大版本。

<Button VerticalOptions="CenterAndExpand" Grid.Column="1" Grid.Row="3">
     <Button.Image>
         <OnPlatform x:TypeArguments="FileImageSource"
             iOS="Revolutions_Button.png"
             Android="Revolutions_Button.png" />
      </Button.Image>
</Button>

我甚至尝试了HeightRequestWidthRequest,即使这样有效,但它并不是一个真正可行的解决方案,因为我觉得难以编码高度和宽度对于在不同屏幕上缩放有意义大小。但即使这些选项只调整了按钮容器的大小,图像仍然完全不同。

我们如何让图片缩放以适应Android上按钮的界限?

2 个答案:

答案 0 :(得分:1)

不幸的是,Xamarin Forms中的默认Button控件不支持您的场景(大图像,在Android上缩放以适应较小的按钮)。

以下是问题的样子。用于按钮的图像大于按钮大小(在此示例中为100x50),iOS缩放图像,但Android只显示图像中的前100x50(或200x100,具体取决于设备的dpi)像素。

iOS vs Android preview of the xaml from the question

您有什么选择?

  1. 最简单的一个是use X-Labs ImageButton control。不幸的是,不再支持这个项目。
  2. Android平台的扩展按钮渲染器,可以解决此问题。
  3. 使用不需要缩放/合身的不同图像。
  4. 创建您自己的图像按钮控件,示例为here和此处
  5. Xamarin.Forms应该在Button上有Aspect属性来支持不同的图像渲染策略,我创建了一个功能请求/ bug:

    图像控件已有此属性,请参阅what are possible values and how they affect image scaling

    我已经提交了Xamarin错误,请随时将自己添加到邮件列表中以接收更新:https://bugzilla.xamarin.com/show_bug.cgi?id=52938

答案 1 :(得分:1)

您是否尝试过ImageButton控制?

<ImageButton VerticalOptions="CenterAndExpand"
             Grid.Column="1"
             Grid.Row="3"
             Aspect="AspectFit"
             Source="Revolutions_Button.png" />