Xamarin 基础知识
2024-10-02 06:23:54
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"
在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。
最新文章
- 保留password模式文本框textbox内的数据不丢失。
- (十五)WebGIS中平移功能的设计和实现
- sql语句修改列
- iOS---XMPP环境搭建过程
- 比较好用的web打印控件&mdash;&mdash;Lodop
- hdu1588 矩阵快速幂
- EBS运行快速安装的程序时,提示DISPLAY变量设置不对
- Python学习笔记-Day2-Python基础之列表操作
- TIBCO ActiveMatrix BPM 生成daa包脚本
- android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)
- Android Studio 中解决.9图片报错的问题
- SQL Server索引进阶:第十三级,插入,更新,删除
- on IRC, how to use secure connection(SSL) and get a cloak/vhost to hide your IP
- C# Sap Rfc 连接代码实例
- PHP 个人用到的琐碎代码记录
- JDBC mysql 相关内容笔记
- Kubernetes理论基础
- 【特征提取】MultiBlock-LBP特征
- PHP字符串offset取值特性
- arcgis mpk 打包地图 (数据管理)
热门文章
- python爬虫之快速对js内容进行破解
- 03_javaSE面试题:类初始化和实例初始化
- 【烂笔头】常用adb命令记录
- Linux命令学习-ls命令
- 嵊州D1T4 cf1174E 占梦人
- Spring 核心技术(2)
- 1. 全文搜索框架 Haystack
- springboot +mybatis分页插件PageHelper
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十一):在小程序中使用 WebSocket (.NET Core)
- android_sdcard读写(一)