1

我想创建由 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 对象,并且可以通过继承或其他方式将它们加载到项目的每个页面中,但是我不知道如何实现。

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

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

提前致谢。

4

1 回答 1

2

我的建议是让您的菜单成为 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 ();

对于您的菜单片段,您将创建一个扩展片段的 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 侦听的事件。

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

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

于 2013-08-13T00:31:13.090 回答