一个人的生活 新奇视 新感觉 www.x74.cn
分类: Android平台
2017-11-14 17:23:09
我创建一个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”)
}
原文地址:http://www.apkbus.com/blog-919651-76494.html