我创建一个Xamarin形式跨平台应用为Android和iOS操作系统。我必须在操作系统的appbars添加一个渐变(在iOS Android和UINavigationBar、称为工具栏)有没有办法做到这一。请帮我应付的。任何东西。
你应该用户自定义渲染,像这样:
在你的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”)
}