📅  最后修改于: 2021-01-11 16:06:02             🧑  作者: Mango
Xamarin.Forms是Xamarin的功能。 Xamarin是流行的移动开发框架,它通过用于构建移动应用程序的工具和库扩展了.Net开发平台。 Xamarin.Forms是Microsoft收购的开放源代码,跨平台框架,用于通过单个共享代码库使用.NET构建Android,iOS和Windows应用程序。我们使用Xamarin。形成内置的页面,布局和控件,以通过高度可扩展的单个API构建和设计移动应用程序。子类化任何控件以自定义行为或定义我们的控件,布局,页面和单元格以使我们的应用程序像素完美。
首先,当我们打开任何设备,任何手机时,无论我们在屏幕上看到什么,可见区域都称为Page 。屏幕上所有可见区域都被视为页面,我们可以像ROM一样进行比较。然后,我们如何组织页面上的内容以及如何计划这些内容称为Layout 。视图是我们将放置在实际位置上的实际项目,我们可以将它们堆叠,放置在左侧,右侧等。
在Xamarin中,设备上显示的元素称为屏幕。在诸如手机之类的设备中,这些是可见的,或者我们可以看到的称为可视元素。
在Xamarin中有4个视觉元素。
页
在设备中,从导航栏到屏幕末端(称为页面) 。
Pages | Description |
---|---|
ContentPage | Content Page contains a single view. |
MasterDetailPage | MasterDetailPage has two panes for the page. Master Page contains the Menu and detail page contains the content. |
NavigationPage | NavigationPage contains the navigation bar. In NavigationPage, we kept the page on a stack and can jump from one page to another. The navigation bar can have navigation buttons as well as the title. |
TabbedPage | TabbedPage is a container page. The tabbed page acts as a container which holds the content page associated with each tab. |
CarousalPage | The page that allows the sweeping across to show other views. |
布局
页面中的子元素称为布局
Layouts | Description |
---|---|
StackLayout | In StackLayout, all the child elements are kept in a line. StackLayout is the most used layout. |
AbsoluteLayout | A view that positioned the child layout at a specified position using anchors to define the place and size. |
RelativeLayout | In RelativeLayout, we position the elements relative to each other using constraint. |
Grid | Arrange the multiple views in rows and columns, just like a table. |
布局包含许多元素,称为“视图” 。
细胞
视图的子元素称为Cell 。
Cells | Description |
---|---|
EntryCell | The cell is containing a label and single-line entry element |
SwitchCell | This cell is the same as a switch, but before that, there is a label. |
TextCell | The cell contains both primary and secondary field. |
ImageCell | Text cell that also contains the image |
页
页面用于设计应用程序的屏幕。 Xamarin中有多种类型的“页面”。页面是父对象的一种类型,它进一步包含一个子对象,可以是另一个页面或布局。页面占据整个屏幕。
在Xamarin中,可以使用六种类型的页面。
内容页
内容页面在整个可见屏幕上显示一个视图或一个容器。
在这里,我们将借助Visual Studio 2017中的Xamarin.Forms研究内容页面的结构。
要在Visual Studio中创建页面,我们将遵循以下步骤。
创建内容页面的过程
单击文件->新建->项目
单击Visual C#->选择跨平台->选择移动应用(Xamarin.Forms)
输入应用程序名称->单击“确定”
选择空白模板以创建Xamarin应用程序->选择平台->选择代码共享策略->单击确定。
打开解决方案资源管理器->单击MainPage.Xaml->构建应用程序->测试应用程序,然后单击Android模拟器
输出值
特性:
在这里,我们将使用一些属性来增强页面的功能。
边距:边距属性表示元素与其相邻元素之间的距离。
填充:填充表示元素与其子元素之间的距离,用于将控件与其自身的内容分开。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace App15
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
}
}
输出量
Xamarin.Forms MasterDetailPage是一个页面,用于管理两个相关页面之间的信息,而Master Page则显示项目,Detail页面显示有关Master页上项目的详细信息。
在这里,我们将说明如何使用MasterDetailPage以及页面之间的导航。
项目列表的位置与每个平台相同,并且在选择项目后将导航到相应的详细信息页面。母版页还具有导航功能,即导航栏,其中包含可用于导航到活动详细信息页面的按钮。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace MasterPage
{
public partial class MainPage : MasterDetailPage
{
public MainPage()
{
InitializeComponent();
}
}
}
输出值
在这里,我们将在“母版页”上添加更多内容,并在按钮中导航更多页面
右键单击ProjectName-> Add-> Content Page-> Add Page Name(Page1)。
输出值
当我们单击菜单项1时,我们将导航到Page1,而当我们单击菜单项2时,我们将导航到Page2。
输出量
为所有操作系统开发应用程序的最大问题是它们是不同的。
Xamarin承诺为移动应用程序提供共享的代码库。但是,该共享代码基于应用程序逻辑。传统的Xamarin.iOS, Xamarin.Android和Xamarin.UWP开发仍然要求用户界面可以彼此分开编写,这不是一个小任务。
Xamarin.Form是用于构建用户界面的移动应用程序框架。 Xamarin.Form是一个跨平台UI工具包,它使开发人员可以轻松创建可在Android,iOS和Windows Phone之间共享的本机用户界面布局。
Xamarin.Forms提供100%本机iOS,Android和UWP应用程序,实际上,这是任何Xamarin的起点。 Forms应用程序是项目的平台。
Xamarin。表单提供20多种跨平台用户界面控件;每个控件都有特定于Xamarin的API。形式,但以其本机iOS,Android或UWP对应形式发出。换句话说,是Xamarin。表单标签控件将作为iOS UI标签发出。
一些内置的Xamarin.Forms控件在iOS和Android上原生呈现。
Xamarin.Forms不仅限于此
这是共享项目的两种方式。两者都使我们能够在Android,iOS和Windows等不同平台之间共享项目。
共享项目和PCL(便携式类库)之间的区别是:
Shared Project | Portable Class Library |
---|---|
Side by Side |
|
Benefits |
|
Disadvantages |
|
导航页面管理页面之间的导航。它使用基于堆栈的体系结构,并包含PUSH和POP属性以浏览页面。我们可以将导航添加到任何类型的页面以导航到另一个页面。
登录表单
编码
MainPage.Xaml
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace ContentPageProperty
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void Button_Clicked(object sender, EventArgs e)
{
DisplayAlert("Login", "LoginSuccessful", "OK");
Navigation.PushAsync(new HomePage(UserNameEntry.Text));
}
}
}
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
namespace ContentPageProperty
{
public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new NavigationPage(new MainPage());
}
protected override void OnStart()
{
// Handle when your app starts
}
protected override void OnSleep()
{
// Handle when your app sleeps
}
protected override void OnResume()
{
// Handle when your app resumes
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace ContentPageProperty
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class HomePage : ContentPage
{
public HomePage (String UserNameEntry)
{
InitializeComponent ();
AppUserName.Text = "Hello," + UserNameEntry;
}
}
}
输出值
在这里,我们将在文本空间“用户名” ,“密码”中填写信息,然后单击“登录”
填写完信息后,此页面将把我们切换到导航页面。
单击此突出显示的箭头后,我们将切换回登录页面。
在这里,Xamarin表格提供了三种类型的选择器。
1.日期选择器
Xamarin.Form视图允许用户选择日期。 Xamarin.Forms DatePicker调用平台的日期选择器控件,该控件使用户可以选择日期。 DatePicker定义了八个属性。
MainPage.XAML
输出量
3. Xamarin.Forms视图允许用户选择时间。 Xamarin.Forms TimePicker调用平台时间选择器控件,并使用户可以选择时间。
MainPage.XAML
MainPage.XAML.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace App15
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void Button_Clicked(object sender, EventArgs e)
{
var date = dp.Date;
var time = tp.Time;
details.Text = string.Format("Date:{0}\n Time:{1}", date, time);
}
}
}
输出量
4.选择器(称为下拉列表)
Aqua
Black
Blue
Fuchsia
Gray
Green
Lime
Maroon
Navy
Olive
Purple
Red
Silver
Teal
White
Yellow
MainPage.XAML.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace TimePicker
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
void OnPickerSelectedIndexChanged(object sender, EventArgs e)
{
Picker = (Picker)sender;
if (picker.SelectedIndex == -1)
{
boxView.Color = Color.Default;
}
else
{
string colorName = picker.Items[picker.SelectedIndex];
FieldInfo colorField = typeof(Color).GetRuntimeField(colorName);
boxView.Color = (Color)(colorField.GetValue(null));
}
}
}
}
输出量
选项卡式页面包含多个页面或选项卡,并允许在每个页面或选项卡之间进行导航。它的行为就像父母,其他所有孩子都是它的孩子。这是不同设备上不同类型的选项卡式页面的示例。我们可以在底部看到iOS中的标签,而在Android中,顶部可以看到Window phone标签。
MainPage.XAML
MainPage.Xaml.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace XamarinTabbedPage
{
public partial class MainPage : TabbedPage
{
public MainPage()
{
InitializeComponent();
}
}
}
输出值
图标插入
MainPage.XAML
MainPage.Xaml.CS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace XamarinTabbedPage
{
public partial class MainPage : TabbedPage
{
public MainPage()
{
InitializeComponent();
}
}
}
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
namespace XamarinTabbedPage
{
public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new MainPage();
}
protected override void OnStart()
{
// Handle when your app starts
}
protected override void OnSleep()
{
// Handle when your app sleeps
}
protected override void OnResume()
{
// Handle when your app resumes
}
}
}
从ICONFINDER网站下载图标,单击以下链接:https ://www.iconfinder.com/search/?q=message&from=homepage,从下载文件夹中复制并粘贴到drawable文件夹中的资源中。
将对所有页面重复该过程以添加图标。
输出值
A型PAGE的该用户可以从侧通过内容的页面滑动到侧浏览,像画廊。它包含页面和显示区域的列表。
轮播页面通过向右或向左滑动来提供页面导航。它充当其他子页面的基础页面。
轮播页面一次只能看到一个。
MainCarouselPage.Xaml
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
namespace CarousalPage
{
public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new MainCarousalPage();
}
protected override void OnStart()
{
// Handle when your app starts
}
protected override void OnSleep()
{
// Handle when your app sleeps
}
protected override void OnResume()
{
// Handle when your app resumes
}
}
}
输出值
它是内容页面的基类,并显示带有受控模板的全屏内容。在此,我们可以设计整个应用程序的模板,其中包括字体大小,颜色和许多其他样式技术。
输出值
在App.Xaml中,我们可以像这样工作来制作模板。
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
namespace Templatepage
{
public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new Page2();
}
protected override void OnStart()
{
// Handle when your app starts
}
protected override void OnSleep()
{
// Handle when your app sleeps
}
protected override void OnResume()
{
// Handle when your app resumes
}
}
}
输出值
Xamarin.Forms是Xamarin最强大的功能之一,可用于创建跨平台应用程序。借助它们,我们可以达到数十亿个智能设备。毫无疑问,由于Xamarin具有无缝的API集成功能,我们可以说Xamarin已成为企业的“选择”。