登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

如何加入Xamarin表单工具栏和UINavigationBar、梯度 [复制链接]

2017-11-14 15:34
一人无 阅读:226 评论:0 赞:1

我创建一个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”)

}

enter image description here

分享到:
我来说两句
facelist
您需要登录后才可以评论 登录 | 立即注册
所有评论(0)

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

广告投放| 申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

返回顶部