Xamarin.forms 自定义tabview控件
一 问题描述
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开发基础知识的连个布局都不知道,更不知道具体怎么实现,一时间连个思路都没有,于是百度,百度不行换他哥googleFQ,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)
我要打赏

Xamarin.forms 自定义tabview控件的更多相关文章
- Xamarin.forms 自定义dropdownview控件
一 基本说明 想用xamarin做个像美团这样的下拉列表进行条件选择的功能,但是但是找了半天好像没有现成的,也没有其他类似的控件可以走走捷径,再则也没有找到popwindow之类的东东,这里只好使用s ...
- Xamarin Forms 进度条控件
本文翻译:http://xamlnative.com/2016/04/14/xamarin-forms-a-simple-circular-progress-control/ 里面都是胡说的,如果看不 ...
- C# DataGridView自定义分页控件
好些日子不仔细写C#代码了,现在主要是Java项目,C#.Net相关项目不多了,有点手生了,以下代码不足之处望各位提出建议和批评. 近日闲来无事想研究一下自定义控件,虽然之前也看过,那也仅限于皮毛,粗 ...
- C#Winform VScrollBar+Pannel自定义列表控件(原)
该控件的主要实现思路是用的objective-c中的自定义控件思路,主视图中放子视图 效果图 (窗体调用代码) public partial class Form1 : RibbonForm { Li ...
- C# 自定义承载控件
例如ToolStripTextBox类,里面的封装就是一个TextBox控件..NET的类库提供了ToolStripComBox和ToolStripProgressBar两个类.这些类都是从ToolS ...
- 自定义PropertyGrid控件【转】
自定义PropertyGrid控件 这篇随笔其实是从别人博客上载录的.感觉很有价值,整理了一下放在了我自己的博客上,希望原作者不要介意. 可自定义PropertyGrid控件的属性.也可将属性名称显示 ...
- Winform自定义键盘控件开发及使用
最近有学员提出项目中要使用键盘控件,系统自带的osk.exe不好用,于是就有了下面的内容: 首先是进行自定义键盘控件的开发,其实核心大家都知道,就是利用SendKeys.Send发送相应 的字符,但是 ...
- 安卓自定义组合控件--toolbar
最近在学习安卓APP的开发,用到了toolbar这个控件, 最开始使用时include layout这种方法,不过感觉封装性不好,就又改成了自定义组合控件的方式. 使用的工具为android stud ...
- Android自定义控件之自定义组合控件
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...
随机推荐
- hdu4704之费马小定理+整数快速幂
Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Subm ...
- 46黑名单显示的bug---(优化ListView)convertView复用带来的问题
是这种需求: 在黑名单的列表中前三个显示特殊的颜色,后面的列表显示其它的颜色,如图: 可是当翻到第二屏的时候.我们发现了: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkb ...
- BZOJ 1499 NOI2005 瑰丽华尔兹 单调队列
题目大意:给定一个m*n的地图,一些点有障碍物,钢琴初始在一个点,每一个时间段能够选择向给定的方向移动一段距离,求最长路径长 朴素DP的话,我们有T个时间段,每一个时间段有m*n个点,n个时间,一定会 ...
- 闲扯 Javascript 03 时钟和QQ延时框
时钟 : 所用到得图片 : 开启定时器 setInterval 间隔型 setTimeout 延时型 停止定时器 clearInterval clearTimeout 效果思路 获取系统时间 D ...
- [转]VMware 出现下述错误: Application failure. hr=0x80040101:Failed to initialize virtual machine.
VMware 出现下述错误:Application failure. hr=0x80040101:Failed to initialize virtual machine. 解决方法:1.重新注册这三 ...
- [转]php连接postgresql
首先推荐一下postgres数据库,免费,强大,甚至某些方面比商业数据库还要好,大家可以试试. 安装: 附安装图解(网上找的):http://blog.sina.com.cn/s/blog_5edb7 ...
- UVA 1524 - Hot or Cold?(数学)
UVA 1524 - Hot or Cold? 题目链接 题意:给一个一元n次方程,带入x表示时间,f(x)表示温度,如今要求[s, e]的平均温度 思路:平均温度就是 总温度/ (e - s),画出 ...
- UF访问,一些对用友最新的旗舰级产品U9一些引进(图像)
昨天,北京用友公司的本地UF马平之和几个同事总和.并且e创客网站访问者创始人江.双方进行了友好的交流.首先,我们公司的历史.销售.或产品介绍. 然后.用友分公司的总水平介绍了用友的情况下,,马总介绍了 ...
- 一个带动画效果的颜色选择对话框控件AnimatedColorPickerDialog
android4.4的日历中选择日程显示颜色的时候有一个颜色选择对话框非常漂亮,模仿他的界面我实现了一个类似的对话框,而且带有动画效果. 代码的实现可讲的地方不多,主要是采用了和AlertDialog ...
- MSSQL - 创建新用户
1.首先使用Windows身份验证登陆. 2.然后一次打开:安全性--->登录名.右键登录名,点击新建登录名. 3.常规选项卡下:填写登录名.选择SQL Server身份验证,填写登录名密码.取 ...
