![](/img/trans.png)
[英]How to disable sliding animation in Android TabBar with Xamarin.Forms?
[英]Xamarin.Forms: how to disable arrow to hamburger transition animation on Android?
我已經使用Xamarin.Forms創建了一個基本的示例應用程序,在該應用程序中 ,我嘗試使用以下方法重新推崇Twitter或Instagram這樣的UI:
因此,我的應用程序的頁面架構如下所示:
|-MasterDetailPage
.. | --TabbedPage
.... |-導航頁
...... |-ContentPage
為了實現這一目標,我使用了:
該渲染器如下所示:
public class CustomNavigationPageRenderer : MasterDetailPageRenderer
{
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
base.OnLayout(changed, l, t, r, b);
var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
for (var i = 0; i < toolbar.ChildCount; i++)
{
var imageButton = toolbar.GetChildAt(i) as ImageButton;
var drawerArrow = imageButton?.Drawable as DrawerArrowDrawable;
if (drawerArrow == null)
continue;
bool displayBack = false;
var app = Xamarin.Forms.Application.Current;
//var navPage = ((app.MainPage.Navigation.ModalStack[0] as MasterDetailPage).Detail as NavigationPage);
var detailPage = (app.MainPage as MasterDetailPage).Detail;
if (detailPage.GetType() == typeof(BottomTp.Views.NaxamMainPage))
{
var tabPage = detailPage as BottomTabbedPage;
var curPage = tabPage.CurrentPage;
var navPageLevel = curPage.Navigation.NavigationStack.Count;
if (navPageLevel > 1)
displayBack = true;
}
if (!displayBack)
ChangeIcon(imageButton, Resource.Drawable.icon);
}
}
private void ChangeIcon(ImageButton imageButton, int id)
{
if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop)
imageButton.SetImageDrawable(Context.GetDrawable(id));
imageButton.SetImageResource(id);
}
}
這很好用,但是當我“返回”主頁時有最后一個問題 :
這是一個簡短的動畫來說明此問題:
有沒有辦法停用此動畫? 我該如何解決?
您需要使用自定義NavigationPage
。 這是根據您的演示 。
要實現它,需要三個步驟:
1)添加一個名為CustomControl
的文件夾,創建一個繼承自NavigationPage
的類MyNavigationPage
:
namespace BottomTp.CustomControl
{
public class MyNavigationPage : NavigationPage
{
public MyNavigationPage() { }
public MyNavigationPage(Page root) : base(root) { }
}
}
2)更改您的NaxamMainPage.xaml
文件中的標簽,
在您的naxam:BottomTabbedPage
標簽中添加xmlns:controls="clr-namespace:BottomTp.CustomControl;assembly=BottomTp"
,然后將NavigationPage
標簽更改為controls:MyNavigationPage
:
<controls:MyNavigationPage Title="Browse" Icon="md-view-list"
x:Name="NP1">
<x:Arguments>
<views:SfItemsPage />
</x:Arguments>
</controls:MyNavigationPage>
<controls:MyNavigationPage Title="About" Icon="md-help"
x:Name="NP2">
<x:Arguments>
<views:AboutPage />
</x:Arguments>
</controls:MyNavigationPage>
3)在Android平台上創建自定義渲染MyCustomNavigationPageRenderer
:
[assembly: ExportRenderer(typeof(MyNavigationPage), typeof(MyCustomNavigationPageRenderer))]
namespace BottomTp.Droid.Renderers
{
class MyCustomNavigationPageRenderer : NavigationPageRenderer
{
public MyCustomNavigationPageRenderer(Context c) : base(c)
{ }
protected override Task<bool> OnPopToRootAsync(Page page, bool animated)
{
return base.OnPopToRootAsync(page, false);
}
protected override Task<bool> OnPopViewAsync(Page page, bool animated)
{
return base.OnPopViewAsync(page, false);
}
protected override Task<bool> OnPushAsync(Page view, bool animated)
{
return base.OnPushAsync(view, false);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.