带图像Xamarin.Forms的按钮

时间:2014-09-15 17:08:27

标签: xaml xamarin xamarin.forms

我正在使用Xamarin.Forms开发一个交叉式平台应用程序。我想制作一个带图像的按钮,但我不知道如何指定图像的路径。当我使用这个注释时,它可以工作:

<Button Text="Naviga tra i Piani del Museo" Image="foo.png"/>

但是当我的图像在某些文件夹(folder1 / folder2)中时,以下代码不起作用:

<Button Text="Naviga tra i Piani del Museo" Image="folder1/folder2/foo.png"/>

那么我怎样才能正确指定图像的路径?

4 个答案:

答案 0 :(得分:4)

您无法将图像嵌套到文件夹中。 iOS和Android希望它们是资源,WP希望它们位于App的根文件夹中。

Xamarin Forms文档有一个关于working with images的部分。

答案 1 :(得分:0)

使用PCL保持图像通用是一项艰巨的任务。 所以单独做。

请记住,在android项目的情况下,您必须将图像复制到Resources&gt; drawable。

答案 2 :(得分:0)

对于使用Xamarin.Forms项目的文件夹,这对我有用。

您需要将您的资源(在这种情况下为图像文件)放到Xamarin.Form项目中的文件夹中(对于此示例文件夹称为“Assets”)并设置Build Action“Content”。

其次,对于使用Android的资源,您需要将文件放入资源&gt; Android项目中的drawable文件夹(此处不能使用任何文件夹),设置构建操作“AndroidResource”。

<ContentPage.Resources>
    <ResourceDictionary>
        <OnPlatform x:Key="StartButtonImage" 
                    x:TypeArguments="FileImageSource"
                    Android="button_image.png"
                    WinPhone="Assets\button_image.png"
                    iOS="Assets/button_image.png"/>
    </ResourceDictionary>
</ContentPage.Resources>


<ContentPage.Content>
    <Grid>
        <Button Image="{StaticResource StartButtonImage}" BackgroundColor="Transparent"/>
    </Grid>
</ContentPage.Content>

请注意,对于iOs,您需要使用“/”创建路径,使用“\”创建WinPhone / UWP。

答案 3 :(得分:-1)

您应该在OnPlatform标记中指定按钮的Image属性,以便为每个平台提供不同的路径。这是Box View的示例,您可以尝试相同的Button Image属性。

<BoxView HorizontalOptions="Center">
      <BoxView.Color>
        <OnPlatform x:TypeArguments="Color" 
          iOS="Green" 
          Android="#738182" 
          WinPhone="Accent" />
      </BoxView.Color>
      <BoxView.WidthRequest>
        <OnPlatform x:TypeArguments="x:Double" 
          iOS="30" 
          Android="40" 
          WinPhone="50" />
      </BoxView.WidthRequest>
 </BoxView>