小智..

9

我最近遇到同样的问题,我是用MasterDetailPage在Xamarin.Forms与Android中并不设置标题中心.

那么,显而易见的路线是创建一个自定义渲染器override及其OnLayout方法,并找到工具栏TextView并将其设置Gravity为Center,对吗?

但是,当我尝试这样做时,myTextView.Gravity = Android.Views.GravityFlags.Center它只是不起作用.我试过设置ForegroundGravity但没有效果.

所以最后我计算了中心X的位置并设置了TextViewX位置和VOILLA!它现在在中心.这是我的解决方案.

[assembly: ExportRenderer(typeof(CustomMasterDetailPage), typeof(CustomMasterDetailPageRenderer))]

namespace myApp.Droid

{

public class CustomMasterDetailPageRenderer : 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(Resource.Id.toolbar);

for (int index = 0; index < toolbar.ChildCount; index++)

{

if (toolbar.GetChildAt(index) is TextView)

{

var title = toolbar.GetChildAt(index) as TextView;

float toolbarCenter = toolbar.MeasuredWidth / 2;

float titleCenter = title.MeasuredWidth / 2;

title.SetX(toolbarCenter - titleCenter);

}

}

}

}

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐