Xamarin 跨平台处理:

C#:

if (Device.OS == TargetPlatform.Android)
{
Code……
}
else if (Device.OS == TargetPlatform.iOS)
{
Code……
} Padding = new OnPlatform<Thickness>
{
Android = new Thickness(0),
iOS = new Thickness(0,20,0,0)
};
 

Xaml:

<ContentPage.Padding>
<OnPlatformx:TypeArguments="Thickness"
iOS = "0,20,0,0"
Android = "0" />
</ContentPage.Padding>
 

Thickness 官方解释:

指定粗细

MarginPadding属性的类型都是Thickness。 有三种可能的创建时Thickness结构:

  • 创建Thickness结构定义的单个统一值。 单个值应用于左侧、 顶部、 右侧和底部均带有的元素。
  • 创建Thickness水平和垂直值所定义的结构。 所需应用到左侧和右侧的元素,与所需应用于元素的顶部和底部旁边的垂直值进行水平值。
  • 创建Thickness由适用于在左侧、 顶部、 右侧和底部均带有的元素的四个非重复值的结构。

Xamarin Compilation 编译时校验Xaml语法:

1:校验当前对应Xaml档案:

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MainPage

2:校验整个 namespace :

[assembly:XamlCompilation(XamlCompilationOptions.Compile)]

namespace App3
 

Xamarin 设置MainPage:

//设置为导航页
MainPage = new NavigationPage(new MainPage()); //Push 新页面
await Navigation.PushAsync(new HelloXamlPage()); //主页面
MainPage = new new MainPage();
 

Xamarin StaskLayout:

StackLayout默认为垂直布局,类似于Android的LinearLayout,其中最常用的布局属性:

//水平
HorizontalOptions="Center"
//垂直
VerticalOptions="Center"
 

在C#代码中声明StaskLayout,添加Label标签,并加载到PageContent中:

var stacklayout = new StackLayout
{
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.Center
};
//创建Label添加到StackLayout中 stacklayout.Children.Add(new Label { Text = "Label1" });
//将stacklayout加载到Page中 Content = stacklayout;

可以使用 Spacing 来设置间距:

<StaskLayoutSpacing = "10"></StaskLayout >

Xamarin GridLayout:

在 Xaml 中定义GridLayout代码如下:
 
<Grid>
<Grid.RowDefinitions>
<RowDefinitionHeight="*"/>
<RowDefinitionHeight="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinitionWidth="*"/>
<ColumnDefinitionWidth="*"/>
</Grid.ColumnDefinitions>
<LabelText="Top Left"BackgroundColor="Red"Grid.Row="0"Grid.Column="0"/>
<LabelText="Top right"BackgroundColor="Green"Grid.Row="0"Grid.Column="1"/>
<LabelText="bottom Left"BackgroundColor="Blue"Grid.Row="1"Grid.Column="0"/>
<LabelText="bottom right"BackgroundColor="Yellow"Grid.Row="1"Grid.Column="1"/>
</Grid>
 

在 定义行中 RowDefinitions 中指定数量与高度,在定义列ColumnDefinitions 中声明宽度。

在需要添加到Grid中的控件中指定坐标 Grid.Row Grid.Column 定义位置。

var grid = new Grid();

            grid.RowDefinitions.Add(new RowDefinition
{
Height = new GridLength(1,GridUnitType.Star)
});
grid.RowDefinitions.Add(new RowDefinition
{
Height = new GridLength(1, GridUnitType.Star)
});
grid.ColumnDefinitions.Add(new ColumnDefinition
{
Width = new GridLength(1,GridUnitType.Star)
});
 

C#创建Grid,可以使用 grid.Children.Add(new ……,row,col) 方式添加控件。

再来说 设定宽高的种方式:

1 : * == Star 可使用Auto,按比例划分。

2 : Absolute 绝对定位,可以使用px类似单位指定宽高。

Xamarin Navigation页面跳转:

官方关系图:

  

在添加新页面的时候PUSH,返回 POP。

点击到下一页和返回上一页Demo:

Click 事件:

<Button Text="Click Me" Clicked="Button_Clicked" />

PUSH :

async private void Button_Clicked(object sender, EventArgs e)
{
await Navigation.PushModalAsync(new Page1());
}
 

POP :

async privatevoidButton_Clicked(object sender, EventArgs e)
{
await Navigation.PopModalAsync();
}
 

如果在App中声明 如 : MainPage main = new NavigationPage(new Main());

Navigation.PushModalAsync 去掉 Modal。

最新文章

  1. 保留password模式文本框textbox内的数据不丢失。
  2. (十五)WebGIS中平移功能的设计和实现
  3. sql语句修改列
  4. iOS---XMPP环境搭建过程
  5. 比较好用的web打印控件&mdash;&mdash;Lodop
  6. hdu1588 矩阵快速幂
  7. EBS运行快速安装的程序时,提示DISPLAY变量设置不对
  8. Python学习笔记-Day2-Python基础之列表操作
  9. TIBCO ActiveMatrix BPM 生成daa包脚本
  10. android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)
  11. Android Studio 中解决.9图片报错的问题
  12. SQL Server索引进阶:第十三级,插入,更新,删除
  13. on IRC, how to use secure connection(SSL) and get a cloak/vhost to hide your IP
  14. C# Sap Rfc 连接代码实例
  15. PHP 个人用到的琐碎代码记录
  16. JDBC mysql 相关内容笔记
  17. Kubernetes理论基础
  18. 【特征提取】MultiBlock-LBP特征
  19. PHP字符串offset取值特性
  20. arcgis mpk 打包地图 (数据管理)

热门文章

  1. python爬虫之快速对js内容进行破解
  2. 03_javaSE面试题:类初始化和实例初始化
  3. 【烂笔头】常用adb命令记录
  4. Linux命令学习-ls命令
  5. 嵊州D1T4 cf1174E 占梦人
  6. Spring 核心技术(2)
  7. 1. 全文搜索框架 Haystack
  8. springboot +mybatis分页插件PageHelper
  9. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十一):在小程序中使用 WebSocket (.NET Core)
  10. android_sdcard读写(一)