Изменить значок стрелки на значок гамбургера Android c # - PullRequest
0 голосов
/ 11 октября 2018

Я реализовал макет ящика в своем проекте xamarin, и возникла проблема.Гамбургер показывает хорошо, скользит правильно, чтобы стать стрелкой, но когда я пытаюсь восстановить гамбургер, он больше не будет отображаться и вместо этого останется со стрелкой.Я пробовал много решений в предыдущих постах, но ни одно из них не решило мою проблему.

Вот различные состояния экранов:

Состояние 1

Состояние1 изображение

состояние 2

состояние 2 изображение

состояние 3

состояние 3 изображение

Вот мой код:

public class HomeEventActivity : AppCompatActivity
{
    private SupportToolBar mToolBar;
    private MyActionBarDrawerToggle mDrawerToggle;
    private DrawerLayout drawerLayout;
    private ListView mLeftDrawer;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.HomeEvent);
        mToolBar = FindViewById<SupportToolBar>(Resource.Id.toolBarMenu);
        drawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawerLayout1);
        mLeftDrawer = FindViewById<ListView>(Resource.Id.listviewleft);
        SetSupportActionBar(mToolBar);
        mDrawerToggle = new MyActionBarDrawerToggle(this, drawerLayout, Resource.String.openDrawer,
            Resource.String.closeDrawer);
        drawerLayout.AddDrawerListener(mDrawerToggle);
        SupportActionBar.SetDisplayHomeAsUpEnabled(true);
        SupportActionBar.SetHomeButtonEnabled(true);
        mDrawerToggle.SyncState();
        // Create your application here
        if (savedInstanceState != null)
        {
            if (savedInstanceState.GetString("DrawerState") == "Opened")
            {
                SupportActionBar.SetTitle(Resource.String.openDrawer);
                mDrawerToggle.SyncState();
            }
            else
            {
                SupportActionBar.SetTitle(Resource.String.closeDrawer);
                mDrawerToggle.SyncState();

            }
        }
        else
        {
            //This is the first time the activity is run
            SupportActionBar.SetTitle(Resource.String.closeDrawer);
            mDrawerToggle.SyncState();
        }
    }
    public override bool OnOptionsItemSelected(IMenuItem item)
    {
        mDrawerToggle.OnOptionsItemSelected(item);
        mDrawerToggle.SyncState();
        return base.OnOptionsItemSelected(item);
    }

    public override void OnSaveInstanceState(Bundle savedInstanceState, PersistableBundle persistentState)
    {
        if (drawerLayout.IsDrawerOpen((int)GravityFlags.Left))
        {
           savedInstanceState.PutString("DrawerState", "Opened");
            mDrawerToggle.SyncState();
        }
        else
        {
            savedInstanceState.PutString("DrawerState", "Closed");
            mDrawerToggle.SyncState();
        }
        base.OnRestoreInstanceState(savedInstanceState, persistentState);
    }
    protected override void OnPostCreate(Bundle savedInstanceState)
    {
        base.OnPostCreate(savedInstanceState);
        mDrawerToggle.SyncState();
    }

    public override void OnConfigurationChanged(Configuration newConfig)
    {
        base.OnConfigurationChanged(newConfig);
        mDrawerToggle.OnConfigurationChanged(newConfig);
    }
}

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...