如何在Xamarin中创建可重复使用的图标菜单

本文关键字:菜单 图标 Xamarin 创建 | 更新日期: 2023-09-27 18:27:26

我想创建由TmageViews组成的可重复使用的图标菜单。我一直在努力寻找一些好的例子,但我是Xamarin和C#开发的新手,我没有找到很多。

我的项目

我已经创建了相同的菜单模式,该模式包含在带有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();
        }

我想为菜单创建一个外部类,在那里我可以定义一次ImageView对象,我可以通过继承或其他方式将它们加载到项目的每一页中,但我不知道如何实现这一点。

如果有任何帮助、建议或链接,我将不胜感激。

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

提前谢谢。

如何在Xamarin中创建可重复使用的图标菜单

我的建议是让你的菜单成为Android片段。Xamarin有一个很好的漫游教程:http://docs.xamarin.com/guides/android/platform_features/fragments/fragments_walkthrough

使用Fragments,您可以使用Fragment Transaction:替换布局的一部分

var menuFragment = new MenuFragment();
var transaction = FragmentManager.BeginTransaction ();
transaction.Replace (Resource.Id.menuFrame, menuFragment);
transaction.Commit ();

对于您的菜单片段,您将创建一个扩展fragment的Android片段。然后,您可以覆盖onCreateView方法来设置视图内容:

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

在Fragment类中,您可以有一个父Activity侦听的Event。

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

http://developer.android.com/training/improving-layouts/reusing-layouts.html