2017-07-27 24 views
0

如果我有更多的選項卡比適合屏幕,在Android上我可以設置tabmode滾動。但是,如果我以編程方式將所選項目(使用SelectedItem或CurrentPage)設置爲屏幕外的選項卡,則在Android上,選項卡不會滾動。如何強制Xamarin表單TabbedPage在Android上以編程方式滾動到選定的選項卡?

在UWP上它工作正常,在iOS上不起作用,因爲它使用「更多」按鈕。但在Android上,它選擇正確的Child,顯示其內容,但不會將標籤滾動到正確的選項卡(如果它不在屏幕上)。

如果我手動滾動選項卡,選擇了正確的選項卡,但此用戶體驗是非常糟糕的。

顯然是Xamarin Forms的一個錯誤,但我並不期待這個更改,所以關於如何以編程方式滾動選項卡的任何想法?

這是帶有示例應用程序的錯誤報告以查看問題。

https://bugzilla.xamarin.com/show_bug.cgi?id=58441

感謝

回答

2

但如果我以編程方式設置選定的項目(或具有的SelectedItem或當前頁)的標籤出來的畫面,在Android上的標籤不滾動。像這樣的代碼:

你可以寫在一個Xamarin.Android TabbedPageRenderer,滾動右邊的分頁標籤。

public class MyTabbedPageRenderer : TabbedPageRenderer 
{ 
    private TabLayout tabLayout = null; 

    protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e) 
    { 
     base.OnElementChanged(e); 

     this.tabLayout = (TabLayout)this.GetChildAt(1); 

     var selectPosition = this.tabLayout.SelectedTabPosition; 

     tabLayout.TabMode = TabLayout.ModeScrollable; 
     tabLayout.TabGravity = TabLayout.GravityFill; 

     Handler h = new Handler(); 
     Action myAction =() => 
     { 
      tabLayout.GetTabAt(selectPosition).Select(); 
     }; 

     h.PostDelayed(myAction, 200); 
    } 
} 

效果:

enter image description here

+0

@Dpedrinha,你解決問題了嗎? –

+0

完美的解決方案,謝謝!我想念本地技能。我希望你不要介意,如果沒有「更多」按鈕,就可以在iOS中使用相同的可滾動標籤系統。如果你知道答案,我可以問一個新問題。 – Dpedrinha

+0

@Dpedrinha,對不起,我不熟悉iOS。 –

相關問題