【问题标题】:Remove Icon from Action Bar xamarin从操作栏中删除图标 xamarin
【发布时间】:2015-12-08 16:11:45
【问题描述】:

我想从操作栏中删除我的图标,我正在使用 MasterDetail 页面创建一个滑块,我正在使用左侧图标打开滑块,但我想要的“APP Vendas”右侧较小的图标要删除,我尝试了 C# 上的所有内容,以便轻松删除但没有成功。 Tryiend tranpatent、RGBA、None 等,这是我的代码和图片:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using App5.Menu;
using App5.Categorias;
using App5;
namespace App5
{
    public class MainPage : MasterDetailPage
    {
        public MainPage()
        {
            var menuPage = new MenuPage();
            menuPage.OnMenuTap = (page) =>
            {
                IsPresented = false;
                Detail = new NavigationPage(page);
            };
            Master = menuPage;
            Detail = new NavigationPage(new Resumo())
            {
                BarBackgroundColor = Color.Black,
                Icon = None
            };




        }

    }
}

【问题讨论】:

    标签: android xamarin android-actionbar icons xamarin.forms


    【解决方案1】:

    您只需将这些单行代码添加到您的 Android 项目的 MainActivity.cs 文件中。

    ActionBar.SetIcon(Android.Resource.Color.Transparent);
    

    举例

    using Android.OS;
    using Android.Content.PM;
    
    namespace Test.Droid
    {
    
        [Activity(Label = "test", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
        public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
        {
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
                global::Xamarin.Forms.Forms.Init(this, bundle);
                ActionBar.SetIcon(Android.Resource.Color.Transparent);
                LoadApplication(new App());
    
            }
        }
    

    【讨论】:

    • 这很简单,而且效果很好。与此相比,公认的答案似乎有点过头了。
    【解决方案2】:

    我们可以通过在 Android 项目中更改 MainActivity.cs 来使应用程序图标透明,如下所示:

    [Activity (Label = "Sample Application", Icon = "@android:color/transparent", MainLauncher = true]
    

    在这种情况下,没有人注意到通过这样的改变他们使应用程序图标变得透明。因此,应用程序在设备上安装时不会显示图标。

    所以最好的方法是渲染NavigationPage 类来管理一堆其他页面的导航和用户体验。

    在 Android 项目中创建一个名为 CustomNavigationRenderer 的类,该类将是一个特定于平台的实现,其中包含用于从操作栏中隐藏图标的代码。

    using Android.App;  
    using Android.Graphics.Drawables;  
    using Xamarin.Forms;  
    using Xamarin.Forms.Platform.Android;  
    using SampleApp;  
    using SampleApp.Droid;  
    
    [assembly: ExportRenderer(typeof(NavigationPage), typeof(CustomNavigationRenderer))]  
    namespace SampleApp.Droid {  
        public class CustomNavigationRenderer: NavigationRenderer {  
            protected override void OnElementChanged(ElementChangedEventArgs < NavigationPage > e) {  
                base.OnElementChanged(e);  
    
                RemoveAppIconFromActionBar();  
            }  
            void RemoveAppIconFromActionBar() {  
                var actionBar = ((Activity) Context).ActionBar;  
                actionBar.SetIcon(new ColorDrawable(Color.Transparent.ToAndroid()));  
            }  
        }  
    } 
    

    现在创建一个要自定义的 NavigationPage 控件的子类。

    public class CustomNavigationRenderer : NavigationPage {}
    

    成功构建并运行您的应用程序。

    参考:

    【讨论】:

    • 以两种可能的方式解决了我的问题!谢谢!