Xamarin 基础知识
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 官方解释:
指定粗细
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"
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:
<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。
Xamarin 基础知识的更多相关文章
- 【Xamarin开发 Android 系列 4】 Android 基础知识
原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...
- 【Xamarin.Forms 2】App基础知识与App启动
系列目录 1.[Xamarin.Forms 1]App的创建与运行 引言 本篇文章将介绍Xamarin.Forms中 App 基础知识和 App的启动. 开发环境 Visual Studio 2019 ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- .NET Framework基础知识总结
之前给大家总结了java的面试几次技巧总结,同学们看了觉得还是不错,能够得到大家的认可,感觉还是挺不错的.现在又有同学来想小编索要.NET面试的总结了,好吧.谁让小编这么好呢!以下是.NET面试之框架 ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- selenium自动化基础知识
什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
随机推荐
- 解读TIME_WAIT--你在网上看到的大多数帖子可能都是错误的
由于TCP协议整个机制也非常复杂我只能尽可能的在某一条线上来说,不可能面面俱到,如果有疏漏或者对于内容有异议可以留言.谢谢大家. 查看服务器上各个状态的统计数量: netstat -ant | awk ...
- 小白开学Asp.Net Core 《六》
小白开学Asp.Net Core <六> —— 探究.Net Core 跨平台的奥秘 1.写这篇文章的初衷 有好多朋友反馈看不懂我写的开源的一个练手项目(GitHub:https://gi ...
- java word转html 报错 org/apache/poi/xwpf/usermodel/IRunBody
最终解决的办法是修改jar包版本,一定要对应上. <dependency> <groupId>org.apache.poi</groupId> <artifa ...
- Linux命令学习-ls命令
Linux中,ls命令的全称是list,主要作用是列出当前目录下的清单. 列出Linux根目录下的所有目录 ls / 列出当前目录下所有文件夹和文件 ls 列出当前目录下所有文件夹和文件(包括以&qu ...
- Android 开发你需要了解的那些事
本文微信公众号「AndroidTraveler」首发. 背景 最近部门有新入职员工,作为规划技术路线的导师,这边给新员工安排了学习路线. 除了基本的学习路线之外,每次沟通,我都留了一个小问题,让小伙伴 ...
- 赛前集训的第二个小总结(OI生涯盛极必衰orNOIP前最后试炼?)+关于学OI目的的思考
这次只有成绩统计是全的…… 看上去好像还是挺跌宕起伏的啊…… 话说亲爱的教练员又一次食言了,说好的10次就换呢?! 名次表只有前10次的了…… 不得不说前10次还是挺好的,10次考试,7次前十,5次前 ...
- PHP---微信JS-SDK获取access_token/jsapi_ticket/signature权限签名算法,php/thinkphp实现微信分享自定义文字和图片
PHP---微信JS-SDK获取access_token/jsapi_ticket/signature权限签名算法, php/thinkphp实现微信分享自定义文字和图片. 一.先看微信JS-SDK文 ...
- 快速掌握mongoDB(四)—— C#驱动MongoDB用法演示
前边我们已经使用mongo shell进行增删查改和聚合操作,这一篇简单介绍如何使用C#驱动MongoDB.C#驱动MongoDB的本质是将C#的操作代码转换为mongo shell,驱动的API也比 ...
- Oracle将两张表的数据插入第三张表且第三张表中不存在
1.由于是先查再插所以不能使用insert into table1() values(), 要使用insert into table1() select * table2,不能使用values. 2. ...
- STM32-I2C_CheckEvent-标志位自动清除理解
STM32里I2C_CheckEvent函数我们应该是相当熟悉了,在每次发送数据后我们都需要检验相应的EVx(x = 0,1,2,,,)事件是否有发送. 函数定义如下: ErrorStatus I2C ...