【问题标题】:Xamarin Forms MasterDetailPage MasterBoundsXamarin 表单 MasterDetailPage MasterBounds
【发布时间】:2018-03-01 04:07:02
【问题描述】:

谁能告诉我如何在 XF-MasterDetailPage 中编辑 MasterBounds 的值。 我的更改没有效果(MasterDetailPageRenderer/Android):

protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
  base.OnLayout(changed, l, t, r, b);
  if (page != null && page.MasterBehavior == MasterBehavior.Split)
  {
    if (((IMasterDetailPageController)page).MasterBounds.Y > 0)
    {
      Rectangle rect = ((IMasterDetailPageController)page).MasterBounds;
      rect.Y = 0;
      ((IMasterDetailPageController)page).MasterBounds = rect;
    }
  }
}

我需要这样做,因为 Y 的值在某些设备上是错误的,所以顶部有一点空间。

谢谢!

【问题讨论】:

  • 你用调试器验证过这个最终会被调用吗:((IMasterDetailPageController)page).MasterBounds = rect; ?
  • 是的,它被调用了
  • 好的,你有没有在修改之前检查过 Y 真的不是零?
  • 是的,它的值为24
  • 我无法让它工作,但发现在 AddView-Method 中有一个 MasterDetailContainer,其属性名为 TopPadding。该值也已设置,当我在调试器中更改它时,顶部的空间消失了。但是 MDC 是内部的,所以我不能在代码中更改它。该怎么做?

标签: c# xamarin xamarin.forms xamarin.android


【解决方案1】:

如果其他人需要这个,这里是解决方案:

public override void AddView(Android.Views.View child)
{
  child.GetType()?.GetProperty("TopPadding")?.SetValue(child, 0);
  base.AddView(child);
}

【讨论】:

    猜你喜欢
    • 2017-01-24
    • 2018-08-16
    • 2015-04-21
    • 2018-04-02
    • 1970-01-01
    • 2018-03-13
    • 2018-01-20
    • 2019-03-17
    相关资源
    最近更新 更多