Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6658261
  • 博文数量: 915
  • 博客积分: 17977
  • 博客等级: 上将
  • 技术积分: 8846
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-26 09:59
个人简介

一个好老好老的老程序员了。

文章分类

全部博文(915)

文章存档

2022年(9)

2021年(13)

2020年(10)

2019年(40)

2018年(88)

2017年(130)

2015年(5)

2014年(12)

2013年(41)

2012年(36)

2011年(272)

2010年(1)

2009年(53)

2008年(65)

2007年(47)

2006年(81)

2005年(12)

分类: Android平台

2018-01-24 21:01:18

解决方案1.在页面上添加填充
Page类定义了一个名为Padding的属性,用于标记内容不能侵入的页面内部周围的区域。 Padding属性的类型是Thickness,它是一个定义了名为Left,Top,Right,Bottom的四个属性的结构。 (您可能需要记住该顺序,因为这是您在厚度构造函数以及XAML中定义属性的顺序。)厚度结构还定义了构造函数,用于在所有四边上设置相同的填充量或设置 在左边和右边,在顶部和底部相同的金额。
在你最喜欢的搜索引擎中进行一些研究,可以发现iOS状态栏的高度为20(二十个,你可能会问,二十个像素,实际上,现在只是把它们看作20个单位。 大部分的Xamarin.Forms编程,你不需要打扰数字大小,但是第5章,“处理大小”,将提供一些指导,当你需要到像素级。)
你可以像这样容纳状态栏:

点击(此处)折叠或打开

  1. namespace Greetings
  2. {
  3.     public class GreetingsPage : ContentPage
  4.     {
  5.         public GreetingsPage ()
  6.         {
  7.             Content = new Label
  8.             {
  9.                 Text = "Greetings, Xamarin.Forms!"
  10.             };
  11.         Padding = new Thickness(0, 20, 0, 0);
  12.         }
  13.     }
  14. }

现在问候出现在页面顶部20个单位:

在ContentPage上设置Padding属性可以解决文本覆盖iOS状态栏的问题,但是它也会在Android和Windows Phone上设置相同的填充,不需要填充。 有没有办法只在iPhone上设置这个填充?
解决方案2.仅包含适用于iOS的填充(仅限SAP)
共享资产项目(SAP)方法的优点之一是项目中的类是应用程序项目的扩展,因此您可以使用条件编译指令。
让我们试试这个。 我们需要一个基于SAP模板的名为GreetingsSap的新解决方案,以及一个名为GreetingsSapPage的GreetingsSap项目中的新页面类。 要仅在iOS中设置填充,该类看起来像这样:

点击(此处)折叠或打开

  1. {
  2.     public class GreetingsSapPage : ContentPage
  3.     {
  4.         public GreetingsSapPage ()
  5.         {
  6.             Content = new Label
  7.             {
  8.                 Text = "Greetings, Xamarin.Forms!"
  9.             };
  10. #if __IOS__
  11.             Padding = new Thickness(0, 20, 0, 0);
  12. #endif
  13.         }
  14.     }
  15. }

#if指令引用了条件编译符号__IOS__,所以Padding属性只是为iOS项目设置的。 结果如下所示:

但是,这些条件编译符号只影响程序的编译,所以在PCL中不起作用。 有没有办法让PCL项目为不同的平台包含不同的填充?
阅读(1937) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~