2017-04-05 57 views
1

尝试在Xamarin中加载ToolbarItem的图标时出现问题:它不显示。工具栏当然存在。我已经处理了Click方法,它可以工作,但Icon不可见。 “.ico”文件存在于Android项目的所有“可绘制”文件夹中。这是我在另一个解决方案中使用的同样的.ico文件,它在ToolbarItem的图标上工作得很好,但是在这里它不起作用。我试图加载一个嵌入式图像,但它也不起作用。如果我设置了它的Text属性,它会正确显示。我有一个主页,它是一个MasterDetailPage,并且这个页面的细节是RootPage。在RootPage上我有ToolbarItem。这里是我的XAML代码和后台代码:Xamarin ToolbarItem在Android中未显示的图标

首页:

<?xml version="1.0" encoding="utf-8" ?> 
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:views="clr-namespace:ITEC.Views;assembly=ITEC" 
      x:Class="ITEC.Views.HomePage" 
      IsPresented="True"> 

    <MasterDetailPage.Master> 
     <ContentPage Title="Home" Padding="0,20,0,0"> 
      <StackLayout> 
       <ListView x:Name="listView"> 
        <ListView.ItemTemplate> 
         <DataTemplate> 
          <TextCell Text="{Binding Title}"/> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView> 
      </StackLayout> 
     </ContentPage> 
    </MasterDetailPage.Master> 
    <MasterDetailPage.Detail> 
     <views:RootPage/> 
    </MasterDetailPage.Detail> 
</MasterDetailPage> 

后面的代码:

using ITEC.Services; 
using Xamarin.Forms; 
using Xamarin.Forms.Xaml; 

namespace ITEC.Views 
{ 
    [XamlCompilation(XamlCompilationOptions.Compile)] 
    public partial class HomePage : MasterDetailPage 
    { 
     private OptionService _optionService; 
     public HomePage() 
     { 
      InitializeComponent(); 
      Detail=new NavigationPage(new RootPage()); 
      _optionService = new OptionService(); 
      listView.ItemsSource = _optionService.GetOptions(); 
     } 
    } 
} 

RootPage:

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:embedded="clr-namespace:ITEC.MarkupExtensions" 
      x:Class="ITEC.Views.RootPage"> 
    <ContentPage.ToolbarItems> 
     <ToolbarItem Icon="settings.ico" Clicked="MenuItem_OnClicked"></ToolbarItem> 
    </ContentPage.ToolbarItems> 
    <StackLayout> 
     <Label>Hello world</Label> 
    </StackLayout> 
</ContentPage> 

后面的代码:

using System; 
using Xamarin.Forms; 
using Xamarin.Forms.Xaml; 

namespace ITEC.Views 
{ 
    [XamlCompilation(XamlCompilationOptions.Compile)] 
    public partial class RootPage : ContentPage 
    { 
     public RootPage() 
     { 
      InitializeComponent(); 
     } 

     private void MenuItem_OnClicked(object sender, EventArgs e) 
     { 
      DisplayAlert("Hello", "OK", "No"); 
     } 
    } 
} 
+1

我做了一个基本的演示,但没有转载您的问题。你能否检查'.ico'的属性,看它是否作为'AndroidResource'添加到你的项目中。如果问题仍然存在,请您分享一个可以重现此问题的基本演示程序? –

+0

@ ElvisXia-MSFT这似乎是这是实际的问题。将构建操作设置为AndroidResource的确有窍门。当我从另一个项目复制粘贴文件时,我不确定该文件是否具有正确的构建操作。但是没有办法从嵌入资源中使用图标吗?这将是更清洁的方式,而不是将一个文件移动到6个不同的可绘制文件夹 – Stevie

回答

0

尝试png文件为您的图标。我认为这可能是工作。

+0

我试过任何形式的图像。这似乎不是问题 – Stevie