我建立一個Xamarin形式跨平臺應用爲Android和iOS操做系統。我必須在操做系統的appbars添加一個漸變(在iOS Android和UINavigationBar、稱爲工具欄)有沒有辦法作到這一。請幫我應付的。任何東西。html
enter image description hereandroid
你應該用戶自定義渲染,像這樣:app
在你的PCL或共享的項目:工具
公共 類 navigationpagegradientheader : navigationpage
{
公共 navigationpagegradientheader(網頁root) : 基地(root)
{
}動畫
公共 靜止的 只讀 bindableproperty rightcolorproperty = bindableproperty。創造(屬性名:名稱(rightcolor),類型: 類型(顏色),declaringtype: 類型(navigationpagegradientheader),默認值: 顏色。經典口音) 公共 靜止的 只讀 bindableproperty leftcolorproperty = bindableproperty。創造(屬性名:名稱(leftcolor),類型: 類型(顏色),declaringtype: 類型(navigationpagegradientheader),默認值: 顏色。經典口音) 公共 顏色 rightcolor { 獲得 { 退貨 (顏色)方法(rightcolorproperty) } 配置 { 賦值(rightcolorproperty,價值) } } 公共 顏色 leftcolor { 獲得 { 退貨 (顏色)方法(leftcolorproperty) } 配置 { 賦值(leftcolorproperty,價值) } }
}
更新ui
由於「德翰wjiesekara渴望這個問題我已經花時間來建立一個例子,你能夠看到它GitHub。編碼
而後在你的Android工程:spa
【裝配: 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在梯度這樣地:code
<?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