Xamarin.Forms图片无法在手机端显示的问题求助
Xamarin.Forms 图片无法在手机端显示的排查与解决
问题场景
用Xamarin.Forms开发时,添加的图片在手机上完全不显示,试过将Image的Source设为logo.png、icons.logo.png、ArduinoNotes.icons.logo.png,都没效果。
相关代码
C# 代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; namespace ArduinoNotes { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } protected override void OnAppearing() { base.OnAppearing(); NavigationPage.SetHasNavigationBar(this, true); } } }
XAML 代码
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="ArduinoNotes.MainPage"> <ContentPage.ToolbarItems> <ToolbarItem Text="a"/> </ContentPage.ToolbarItems> <StackLayout> <Image x:Name="mainImage" Source="icons/logo.png" WidthRequest="50" HeightRequest="50"> </Image> </StackLayout> </ContentPage>
项目结构:图片存放在项目根目录下的icons文件夹内。
排查与解决方法
1. 必做:检查各平台的图片生成操作
Xamarin.Forms对不同平台的资源生成操作有严格要求,这是最常见的问题根源:
- Android:右键
icons/logo.png→属性,将「生成操作」设为AndroidResource - iOS:把图片添加到项目的
Resources文件夹(或保持现有结构),将「生成操作」设为BundleResource - UWP:设置「生成操作」为
Content,同时将「复制到输出目录」设为「如果较新则复制」
2. 正确设置图片路径
根据项目类型选择对应的路径写法:
共享项目结构
直接用相对路径即可,和你XAML里写的icons/logo.png一致,但要保证各平台的图片文件路径和共享项目完全匹配,且生成操作正确。
.NET标准库项目
如果是.NET标准库,需要把图片设为嵌入式资源(右键图片→属性→生成操作→嵌入式资源),然后在代码中加载:
public MainPage() { InitializeComponent(); mainImage.Source = ImageSource.FromResource("ArduinoNotes.icons.logo.png", typeof(MainPage).Assembly); }
此时XAML中可以留空Source,或者通过绑定实现。
3. 其他排查点
- 文件名大小写:Android平台对文件名大小写敏感,确保代码里的
logo.png和实际文件名完全一致 - 清理重建:清理整个解决方案,再重新生成,避免缓存导致资源不加载
- 图片有效性:检查图片是否是完好的PNG格式,没有损坏
内容的提问来源于stack exchange,提问作者yagizBalli
相关产品推荐
相关产品推荐

