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。
