【问题标题】:Xamarin.Forms Images not showingXamarin.Forms 图像未显示
【发布时间】:2020-02-03 18:15:36
【问题描述】:

我正在 Xamarin Visual Studio 2019 中开发 Cross-Platform 应用程序,但图像显示存在问题。

我正在尝试使用以下 XAML 代码显示图像。

<StackLayout Grid.Row="0" Grid.Column="0" Spacing="0" >
    <Image
        HorizontalOptions="CenterAndExpand"
        VerticalOptions="CenterAndExpand"
        Source="logo"
        WidthRequest="{OnPlatform iOS=300, Android=250}">
    </Image>
</StackLayout>

问题是image not displaying on either preview or deployed app

我从多个论坛(包括 StackOverflow 的帮助)中获取了参考资料,但无法解决这个问题。

以下是我解决问题的要点和方法。

  1. 名为logo的文件是一个android资源文件夹,是一个正确的.png文件。
  2. 文件的属性设置为AndroidResource
  3. 根据此处发布的答案Xamarin Images not showing,文件名中没有连字符,并且还在同一页面上尝试了其他发布的答案。

  4. 图像大小为 307X80 像素,因此在内存或大小范围内。

Android Drawable 文件夹还包含默认的xamarin_logo.png 图像,并且该文件可以正常工作。但不是新添加的图像。将这些图像文件添加到解决方案中时,我在这里缺少什么吗?

【问题讨论】:

    标签: xamarin xamarin.forms xamarin.android xamarin.ios visual-studio-2019


    【解决方案1】:

    图像扩展名或图像路径或图像的构建操作似乎是您的问题。我尝试了您的代码,并且对于 png 和 jpg 图像都可以正常工作。

    <StackLayout Spacing="0">
        <Image HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand"
                Source="github.png" WidthRequest="{OnPlatform iOS=300, Android=250}" />
        <Image HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand"
                Source="githubb.jpg" WidthRequest="{OnPlatform iOS=300, Android=250}" />
    </StackLayout>
    

    注意:我已经删除了 grid.row 和 grid.column 索引,因为我没有在网格内使用 StackLayout。

    请确定您是否将图像直接保存在 Android 资源中的 drawable 文件夹中。如果没有,您可能必须将源名称指定为 FolderName\ImageName.Extension

    更多详情请参考以下链接:

    https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/images?tabs=windows#local-images

    另外,请确认你的图片的BuildActionAndroidResourceCustom ToolMSBuild:UpdateGeneratedFiles。请参考下图。

    我得到了上面发布的代码的以下输出。

    希望对你有帮助。

    【讨论】:

    • 感谢您的回答。我按照你的回答,但它仍然无法正常工作。
    • 如果可能的话,请您分享您的项目或您正在使用的确切代码,以便您获得更多帮助。如果您确实完成了我给出的操作,那么它一定可以正常工作。当然,这可能是每个人都倾向于在某个地方遗漏的一些愚蠢的错误。
    • 我能看到的唯一区别是我在示例中尝试使用 64 x 64 Github 图片而不是您提到的尺寸。
    • 我将尝试使用相同尺寸的图像。如果它不起作用,我会分享代码。
    • 它工作并且这样做了,我想我在 VS 中发现了一个错误。让我解释。我的核心项目中有一个名为 images 的文件夹,其中包含所有图像。当我尝试使用徽标时,我将 logo.png 从该文件夹拖到 Android Resource->Drawable 文件夹。这就是问题所在。为了使图像正常工作,必须使用文件资源管理器操作系统将图像复制到可绘制文件夹,使用 VSs 解决方案资源管理器复制文件似乎不起作用。我在任何地方都没有找到这个参考。无论如何,感谢您的广泛回答将帮助其他人。问候
    【解决方案2】:

    您的XAML 代码是正确的,但是您错过了图像扩展名.png 您必须定义您的图像扩展名(格式) 例如:(image.png 或 image.jpeg)这就是图像不显示的原因。

    <StackLayout Grid.Row="0" Grid.Column="0" Spacing="0" >
        <Image
            HorizontalOptions="CenterAndExpand"
            VerticalOptions="CenterAndExpand"
            Source="logo.png"
            WidthRequest="{OnPlatform iOS=300, Android=250}">
        </Image>
    </StackLayout>
    

    【讨论】:

    • 我应该在问题中提到它,但这不是问题。其他图像不需要扩展即可工作,我仍然尝试使用扩展名logo。它不工作。
    猜你喜欢
    • 2019-05-25
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 2014-11-13
    相关资源
    最近更新 更多