一 問題描述
forms本身ui代碼是翻譯為平台原生代碼,forms按照xaml技術進行對android和ios兩種ui模型進行公共抽象出了幾種page和view,在空杯博客已經有詳細介紹
http://blog.csdn.net/cdf881125/article/details/48029431。其中tabedpage就是其中之一,但是當他們運行起來卻是andorid在上面,ios在下面,很不雅觀,現如今像美團,qq,微信之類的UI都是tab頭在下。



看起來實在很別扭,既然forms本身tabedpage並不支持讓tab頭在上還是下的設置,那么只好自定義
二 自定義tan控件實現方式
2.1 思路
xamarin在其幫助文檔中已經寫得很明確自定義需要forms+原生代碼通過renderer實現,在這里不得不說一點,本身net程序員是不懂什么原生android和ios開發基礎知識的連個布局都不知道,更不知道具體怎么實現,一時間連個思路都沒有,於是百度,百度不行換他哥google翻牆,git各種xamarin tab關鍵字,答案嘛有道是有但是都是這種方式實現,代碼基本看不懂,android倒是很好入門因為其語法本身跟c#基本太多類似,但是oc就不好說了(如果沒有一點基礎的話)
網上搜索成果:http://www.cnblogs.com/xling/p/5129752.html 通過renderer實現其中一段,其艱辛程度之高,一個c#程序員需要先了解forms自定義控件原理,然后找幾本android和ios書看一遍然后再把customrenderer例子代碼看個遍,例子:https://github.com/xamarin/xamarin-forms-samples/tree/master/CustomRenderers,因為我就是這樣需求思路的,再有git的xlib
地址:https://github.com/jsauvexamarin/Xamarin.Forms-CustomTabbedPage,這里面自定義了一些但是基本上沒有啥用處,經過這些過后不得不再去看看android和ios人家本身實現的原理,我想說既然2個平台都有基本了解了況且實現起來也是分分鍾的事情,xamarin的學習成本到底還是那么高啊。
2.2 xamarin.forms 布局控件實現
參考:1 https://github.com/gruan01/FlipView 自己實現的廣告欄,
2 https://github.com/chrisriesgo/xamarin-forms-carouselview 找到辦法
2.3 自己實現 思考能不能通過forms本身實現,那就不用關心平台renderer怎么實現了,自然是可以的,利用stacklayout +contentview,布局嵌套實現
實現思路:stacklayout作為容器,垂直對齊
,
三 實現結果
3.1 只有圖片做tab頭

3.2 只有文本tab頭
3.3 文本和圖片均來做tab頭

4 來一張ios的實現

四 總結
這里實現也只是投機取巧而已,xamarin 本身自定義還是需要renderer通過原生代碼實現,這里不得不思考一下實現思路以及參考資源
五 代碼
下載;https://yunpan.cn/cqLduXxmV8MXZ (提取碼:ead5)
我要打賞


