博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何加入Xamarin表单工具栏和UINavigationBar、梯度
阅读量:7061 次
发布时间:2019-06-28

本文共 2987 字,大约阅读时间需要 9 分钟。

hot3.png

我创建一个Xamarin形式跨平台应用为Android和iOS操作系统。我必须在操作系统的appbars添加一个渐变(在iOS Android和UINavigationBar、称为工具栏)有没有办法做到这一。请帮我应付的。任何东西。

 

enter image description here

 

你应该用户自定义渲染,像这样:

在你的PCL或共享的项目:

公共 类 navigationpagegradientheader : navigationpage

{
公共 navigationpagegradientheader(网页root) : 基地(root)
{
}

公共 静止的 只读 bindableproperty rightcolorproperty =  bindableproperty。创造(属性名:名称(rightcolor),类型: 类型(颜色),declaringtype: 类型(navigationpagegradientheader),默认值: 颜色。经典口音)公共 静止的 只读 bindableproperty leftcolorproperty =   bindableproperty。创造(属性名:名称(leftcolor),类型: 类型(颜色),declaringtype: 类型(navigationpagegradientheader),默认值: 颜色。经典口音)公共 颜色 rightcolor{    得到 { 退货 (颜色)方法(rightcolorproperty) }    配置 { 赋值(rightcolorproperty,价值) }}公共 颜色 leftcolor{    得到 { 退货 (颜色)方法(leftcolorproperty) }    配置 { 赋值(leftcolorproperty,价值) }}

}

更新

因为“德翰wjiesekara渴望这个问题我已经花时间来创建一个例子,你可以看到它GitHub。

然后在你的Android工程:

【装配: exportrenderer(类型(navigationpagegradientheader), 类型(navigationpagegradientheaderrenderer))]

命名空间 yournamespace。机器人
{
公共 类 navigationpagegradientheaderrenderer : navigationrenderer
{
受保护的 重写 无效 onelementchanged(elementchangedeventargs<navigationpage>E)
{
基地。onelementchanged(E)

/ /运行时创建元素        如果 (E。oldelement != 无效的 | | 元素 == 无效的)        {        退货        }        VaR控制装置= (navigationpagegradientheader)这。元素        VaR语境= (主要活动)这。语境语境。ActionBar。setbackgrounddrawable(新 gradientdrawable(gradientdrawable。方向。从右到左, 新 int[ ] {控制装置。rightcolor。Android(),控制装置。leftcolor。Android() }))    }}

}

如果你使用formsappcompatactivity在你的主要活动只需添加一个Drawable在梯度这样地:

<?XML的版本=“1”编码=“UTF-8”???????>

<形 xmlns:Android=“http:/ / / / / schemas.android.com APK Android。” 安卓:形状=“矩形” >

<梯度

安卓:角=“180”
安卓:centercolor=“# 26c986”
安卓:endcolor=“# 109f8d”
Android的:startcolor=“# 36ed81”
安卓:类型=“线性” >

< /形状>

然后在你toolbar.axml文件称这个drawable:

< android.support.v7.widget.toolbar

xmlns:Android=“http:/ / / / / schemas.android.com APK Android。”
安卓:ID=“@ ID /工具栏”
安卓:layout_width=“match_parent”
安卓:layout_height=“包装_高兴”
安卓:背景=“”drawable /梯度”
安卓:主题=“@风格/ themeoverlay。appcompat ActionBar。黑暗。”
安卓:popuptheme=“@风格/ themeoverlay。appcompat。” >
在你的iOS项目:

【装配: exportrenderer(类型(navigationpagegradientheader), 类型(navigationpagegradientheaderrenderer))]

命名空间 yournamespace。iOS{
公共 类 navigationpagegradientheaderrenderer: navigationrenderer
{
公共 重写 无效 viewwillappear(布尔动画)
{
基地。viewwillappear(动画)

VaR控制装置= (navigationpagegradientheader)这。元素        VaR梯度层= 新 cagradientlayer()梯度层。界限 = 导航栏。界限梯度层。颜色 = 新 cgcolor[ ] {控制装置。rightcolor。tocgcolor(),控制装置。leftcolor。tocgcolor() }梯度层。起止点 = 新 cgpoint(零, 零点五)梯度层。端点 = 新 cgpoint(“1”, 零点五)        uigraphics。beginimagecontext(梯度层。界限。大小)梯度层。renderincontext(uigraphics。getcurrentcontext())        UIImage图片= uigraphics。getimagefromcurrentimagecontext()        uigraphics。endimagecontext()        导航栏。setbackgroundimage(图片, uibarmetrics。默认)    }}

}

最后在你代码文件文件称这这样的控制:

主页 = 新 navigationpagegradientheader(新 主页()) {

leftcolor = 颜色。fromhex(“# 109f8d”),
rightcolor = 颜色。fromhex(“# 36ed81”)
}

原文地址:

转载于:https://my.oschina.net/u/3724196/blog/1573409

你可能感兴趣的文章
jqgrid 获取选中行主键集合
查看>>
arraycopy效率比较
查看>>
使用 Linq 对多个对象进行join操作 C#
查看>>
【转载】VC操作剪切板
查看>>
dede二级导航与二级栏目 ----内容介绍二级导航
查看>>
禁止后台运行
查看>>
poj3273(二分)
查看>>
user_add示例
查看>>
dwz框架在网站群项目中的应用(1)—概述
查看>>
关于迹的矩阵函数求导
查看>>
c++ 不太懂得地方
查看>>
Git与Github的连接与使用
查看>>
[SAS]方便查询Tips
查看>>
SAP FICO hande汉得培训资料---I 总帐模块篇.pdf
查看>>
C#程序出现引用失败的原因
查看>>
Java中文件的上传与下载
查看>>
报表实施案例:某市利用大数据助力精准扶贫项目开展
查看>>
十大矩阵经典题目(转)
查看>>
【LeetCode】118 & 119 - Pascal's Triangle & Pascal's Triangle II
查看>>
javascript深入理解js闭包
查看>>