如果我有更多选项卡而不是适合屏幕,那么在Android上我可以将tabmode设置为可滚动。但是,如果我以编程方式将所选项目(使用SelectedItem或CurrentPage)设置为屏幕外的选项卡,则在Android上,选项卡不会滚动。
在UWP上,它运行良好,在iOS上它不起作用,因为它使用"更多"按钮。但是在Android上,它选择了正确的Child,显示其内容,但没有将标签滚动到右边的标签(如果它不在屏幕外)。
如果我手动滚动标签,则会选择右侧标签,但此用户体验非常糟糕。
显然是Xamarin Forms的一个错误,但我很快就没想到会有任何变化,所以有关如何以编程方式滚动标签的任何想法?
这是带有示例应用程序的错误报告,以查看问题。
答案 0 :(得分:3)
但是,如果我以编程方式将所选项目(使用SelectedItem或CurrentPage)设置为屏幕外的选项卡,则在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, 1);
}
}
效果: