針對上兩期所說的Layout布局中礁蔗,有一點我想強調一下觉义,我自己也曾經在這個坑里栽過,關于布局Xamarin里只有Padding浴井,沒有Margin晒骇。雖然官方文檔里明確說明可以用Margin,但是我不清楚文檔是什么時候的磺浙,無論怎么嘗試XAML里都不識別Margin洪囤。后面還有一些這樣的坑,所以看官方文檔時撕氧,總體方向可以瘤缩,但有些細枝末節(jié)如遇到問題,要相信自己伦泥,對官方文檔提出些懷疑剥啤。真希望能有些大神能站出來,用自己的經歷將一些“暗溝”指出來奄喂,造福后面的人铐殃。
好了,不感慨了跨新,咱們進入今天的正題富腊。首先使用TabBar+Navigation的結合體時先看結論,再看正文域帐,可能效果并不是你所需要的赘被。這也是Xamarin的坑點之一吧,我至今還沒有爬出來肖揣。
Navigation這塊都好理解民假,添加它是為了實現堆棧式的頁面結構,主要是push和pop方法龙优⊙蛞欤可是對一般的模態(tài)界面出現Xamarin用的也是push和pop,這個我在這里給大家區(qū)分一下
先說說模態(tài)界面的push與pop
再看看Navigation里界面的push與pop
不要用混了彤断。
還是先說TabBar+Navigation混合體吧野舶,我們先看代碼
using System;
using Xamarin.Forms;
namespace TabAndNav
{
public class MainHomePage:TabbedPage
{
public MainHomePage ()
{
var nav1 = new NavigationPage(new FirstPage());
nav1.Icon = "tab_1.png"
nav1.BarBackgroundColor = Color.FromHex("660000");
nav1.BarTextColor = Color.White;
nav1.Title = "Home";
Children.Add (nav1);
var nav2 = new NavigationPage (new SecondPage ());
nav2.Icon ="tab_2.png";
nav2.BarBackgroundColor= Color.FromHex("660000");
nav2.BarTextColor = Color.White;
nav2.Title = "Creat";
Children.Add (nav2);
var nav3 = new NavigationPage (new ThirdPage ());
nav3.Icon = "tab_3.png";
nav3.BarBackgroundColor = Color.FromHex("660000\");
nav3.BarTextColor = Color.White;
nav3.Title = "Search";
Children.Add (nav3);
var nav4 = new NavigationPage (new ForthPage ());
nav4.Icon = "tab_4.png";
nav4.BarBackgroundColor =Color.FromHex("660000");
nav4.BarTextColor= Color.White;
nav4.Title ="My";
Children.Add (nav4);
}
}
}
核心代碼都在這里了,至于every page的樣式我就不展示了宰衙。
我的是每個子界面里套了一個Navigation平道,這樣每個子系統里都是一個獨立的界面堆棧,通常在iOS里就是這種結構供炼。如果你的圖片顯示有問題一屋,不要著急窘疮,這是正常現象冀墨,第一次搞可能都有點小問題闸衫。重點在后面:
- 1、iOS里TabBar默認是在底部的轧苫,在Android里默認是在頂部
- 2楚堤、TabBar是不會隨著視圖的push和Pop而顯示和隱藏TabBar的,因為Xamarin.forms根本就沒有提供這樣的方法含懊。
- 3、 Navigation右側按鈕是可以自定義的衅胀,而左側按鈕是沒有設置的
結論###
如果你的需求是這樣岔乔,那么你可以無所顧慮的使用,但如果不是這樣滚躯,我想你也不要找了雏门,資源實在有限,只有進入Android和iOS Project分別進行自定義掸掏,這種方法比較繁瑣茁影。