C# 如何在Xamarin中创建可重用的图标菜单

C# 如何在Xamarin中创建可重用的图标菜单,c#,android,menu,imageview,xamarin,C#,Android,Menu,Imageview,Xamarin,我想创建可重用的图标菜单的TmageViews。 我一直在努力寻找一些好的例子,但是我对Xamarin和C#development还不熟悉,没有找到很多 我的项目 我已经创建了相同的菜单模式,它包含在带有include标记的每个页面中,并在各个页面中使用 每个页面都有不同的布局,并被定义为单独的活动 菜单工作,但我正在重新定义相同的元素一遍又一遍,这是我认为是必要的 请参阅下面的代码: protected override void OnCreate (Bundle bundle)

我想创建可重用的图标菜单的TmageViews。 我一直在努力寻找一些好的例子,但是我对Xamarin和C#development还不熟悉,没有找到很多

我的项目

我已经创建了相同的菜单模式,它包含在带有include标记的每个页面中,并在各个页面中使用

每个页面都有不同的布局,并被定义为单独的活动

菜单工作,但我正在重新定义相同的元素一遍又一遍,这是我认为是必要的

请参阅下面的代码:

    protected override void OnCreate (Bundle bundle)
    {

        base.OnCreate (bundle);

        SetContentView (Resource.Layout.AirConPage);

        ImageView LightCat_btn = FindViewById<ImageView> (Resource.Id.Lights);
        LightCat_btn.Click += new EventHandler (LightBtn_Click);

        ImageView BlindCat_btn = FindViewById<ImageView> (Resource.Id.Blinds);
        BlindCat_btn.Click += new EventHandler (BlindsBtn_Click);

        void LightBtn_Click(object Sender, EventArgs e) {

            Intent i = new Intent();

            i.SetClass(this, typeof(LightPage));
            //  i.AddFlags(ActivityFlags.NewTask);

            StartActivity(i);
            Finish();

        }

        void BlindsBtn_Click(object Sender, EventArgs e) {

            Intent i = new Intent();

            i.SetClass(this, typeof(BlindPage));
            //  i.AddFlags(ActivityFlags.NewTask);

            StartActivity(i);
            Finish();

        }
protectedoverride void OnCreate(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.AirConPage);
ImageView LightCat_btn=FindViewById(Resource.Id.Lights);
LightCat_btn.Click+=新事件处理程序(LightBtn_Click);
ImageView BlindCat_btn=FindViewById(Resource.Id.Blinds);
BlindCat_btn.Click+=新事件处理程序(BlindsBtn_Click);
void LightBtn_单击(对象发送者,事件参数e){
意图i=新意图();
i、 SetClass(this,typeof(LightPage));
//i.AddFlags(ActivityFlags.NewTask);
星触觉(i);
完成();
}
无效盲板单击(对象发送者,事件参数e){
意图i=新意图();
i、 SetClass(此,类型为(盲页));
//i.AddFlags(ActivityFlags.NewTask);
星触觉(i);
完成();
}
我想为菜单创建一个外部类,在这里我将定义ImageView对象一次,我可以通过继承或其他方式将它们加载到项目的每个页面中,但我不知道如何实现这一点

我将非常感谢任何帮助、建议或链接

如果您有任何问题或需要更多信息,请发布


提前谢谢。

我的建议是将您的菜单设置为Android片段。Xamarin有一个很好的演练教程:

使用片段,您可以使用片段事务替换布局的一部分:

var menuFragment = new MenuFragment();
var transaction = FragmentManager.BeginTransaction ();
transaction.Replace (Resource.Id.menuFrame, menuFragment);
transaction.Commit ();
对于菜单片段,您将创建一个扩展该片段的Android片段。然后您可以重写onCreateView方法来设置视图内容:

public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    inflater.Inflate (Resource.Layout.MyMenu, container);
    return base.OnCreateView (inflater, container, savedInstanceState);

}
在片段类中,可以有父活动侦听的事件

您可以做的另一个选择是为菜单定义布局,并将其“包括”在其他布局中: