我想创建由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对象,我可以通过继承或其他方式将它们加载到项目的每个页面中,但是我不知道如何实现它。
我非常感谢任何帮助,建议或链接。
如果您有任何疑问或需要更多信息,请发布。
提前致谢。
答案 0 :(得分:2)
我的建议是将您的菜单设为Android片段。 Xamarin有一个很好的演练教程: http://docs.xamarin.com/guides/android/platform_features/fragments/fragments_walkthrough
使用片段,您可以使用片段交易替换部分布局:
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监听的事件。
您可以做的另一个选择是为您的菜单定义布局并在其他布局中“包含”它:
http://developer.android.com/training/improving-layouts/reusing-layouts.html