繁体   English   中英

Xamarin.Android ActionBar徽标单击侦听器

[英]Xamarin.Android ActionBar logo click listener

我要处理我的自定义徽标,请单击ActionBar。

 <style name="ReadingsActionBarTheme"
    parent="@android:style/Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/Readings.ActionBar</item>
<item name="logo">@drawable/back</item>
<item name="android:logo">@drawable/back</item>

样式

我必须在Android 4.4上编译,这是我尝试的方法:

public override bool OnOptionsItemSelected(Xamarin.ActionbarSherlockBinding.Views.IMenuItem item)
    {
        switch (item.ItemId)
        {
            case Android.Resource.Id.Home:
                var homeActivity = new Intent(this, typeof(HomeActivity));
                StartActivity(homeActivity); ;
                break;
        }
        return base.OnOptionsItemSelected(item);
    }

有什么办法吗?

我要处理我的自定义徽标,请单击ActionBar。

您可以按照以下步骤操作,以在ActionBar上单击图标;

  1. 首先,请确保您使用Android.Support.V7.App.AppCompatActivity如果没有,请安装Xamarin.Android.Support.v7.AppCompat通过的NuGet和继承您的活动AppCompatActivity

  2. 其次,请在Resource\\menu\\actionbar_items.xml定义菜单项:

     <?xml version="1.0" encoding="utf-8" ?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_favorite" android:icon="@drawable/iconName" android:title="favorite" app:showAsAction="ifRoom"/> </menu> 
  3. OnCreateOptionsMenu膨胀菜单:

     public override bool OnCreateOptionsMenu(IMenu menu) { MenuInflater.Inflate(Resource.Menu.actionbar_items, menu); return base.OnCreateOptionsMenu(menu); } 
  4. 处理OnOptionsItemSelected的项目单击事件:

     public override bool OnOptionsItemSelected(IMenuItem item) { switch (item.ItemId) { case Resource.Id.action_favorite: //do something break; } return base.OnOptionsItemSelected(item); } 

这是完整的活动:

[Activity(Label = "ActionbarClickDemo", MainLauncher = true,Theme ="@style/AppTheme")]
public class MainActivity : AppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);
        Android.Support.V7.Widget.Toolbar myToolbar = (Android.Support.V7.Widget.Toolbar)FindViewById(Resource.Id.my_toolbar);
        SetSupportActionBar(myToolbar);
    }

    public override bool OnCreateOptionsMenu(IMenu menu)
    {
        MenuInflater.Inflate(Resource.Menu.actionbar_items, menu);

        return base.OnCreateOptionsMenu(menu);
    }

    public override bool OnOptionsItemSelected(IMenuItem item)
    {
        switch (item.ItemId)
        {
            case Resource.Id.action_favorite:
                //do something
                break;
        }
        return base.OnOptionsItemSelected(item);
    }
}

这是AppTheme:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
</style>

有关创建ActionBar的信息,请参阅设置应用程序栏

有关将项目添加到ActionBar的信息,请参阅添加视图和操作提供程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM