0
我試圖寫一個應用程序與工具欄導航使用完全像Gmail應用程序的片段:你有一個抽屜切換顯示爲「漢堡」按鈕,當你點擊一個郵件,漢堡包轉換到後退按鈕,反之亦然。抽屜切換按鈕轉換與片段導航
截至目前,我已經能夠實現非常接近我想要的東西,除了切換按鈕不是從漢堡到後退箭頭的「動畫」。
我所做的是在MainActivity監聽器結合爲返回堆棧:
SupportFragmentManager.AddOnBackStackChangedListener(this);
從片段A
然後,可以裝入B片段將其添加到返回堆棧:
ResultFragment fragment = new ResultFragment();
this.Activity.SupportFragmentManager.BeginTransaction()
.Replace(Resource.Id.main_fragment, fragment)
.AddToBackStack("results")
.Commit();
在主要活動中,監聽器檢查Backstack,如果不是空的,它將漢堡切換到後臺:
bool canGoBack = SupportFragmentManager.BackStackEntryCount > 0;
if (canGoBack)
{
//Showing Back Button
if (!_toolbarNavigationListererSet)
{
drawerToggle.DrawerIndicatorEnabled = false;
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
BackHandler backHandler = new BackHandler(this);
drawerToggle.ToolbarNavigationClickListener = backHandler;
_toolbarNavigationListererSet = true;
}
}
else
{
//Show the hamburger
SupportActionBar.SetDisplayHomeAsUpEnabled(false);
drawerToggle.DrawerIndicatorEnabled = true;
drawerToggle.ToolbarNavigationClickListener = null;
_toolbarNavigationListererSet = false;
}
的drawerToggle.ToolbarNavigationClickListener改變後退按鈕的行爲叫後退按鈕按下事件,如:
Activity.OnBackPressed();
罷了。
我明白,這樣做,漢堡是隱藏的,後退按鈕顯示,反之亦然,所以我相信這就是爲什麼我看不到動畫。
我錯過了什麼?感謝您的幫助。
P.s.代碼是用C#編寫的,因爲我使用的是Xamarin.Android,但Java代碼和/或Android本機代碼被廣泛接受爲建議。
謝謝!這從後臺按鈕到漢堡包(不得不從OfFloat(0f,1.0f)更改爲OfFloat(1.0f,0f)),但不適用於漢堡包和後退按鈕。更確切地說,只有當我在設置'drawerToggle.DrawerIndicatorEnabled = false;'之前'離開Task.Delay(500)'' –