zoukankan      html  css  js  c++  java
  • 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 官方解释:

    指定粗细

    Margin Padding 属性的类型都是 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。

  • 相关阅读:
    让linux用户隶属于多个组
    ldd 的介绍
    全栈博客开发(三)完善项目并容器化
    C++ 迭代器
    C++ vector类
    C++输入输出流和变量
    C++ vscode搭建windows C++开发环境
    全栈博客开发(二)添加渲染
    C++ string类
    全栈博客开发(一)服务结构
  • 原文地址:https://www.cnblogs.com/yangchaojie/p/9203781.html
Copyright © 2011-2022 走看看