मैं एंड्रॉइड और आईओएस ऑपरेटिंग सिस्टम के लिए एक एक्समरिन फॉर्म क्रॉस प्लेटफ़ॉर्म एप्लिकेशन बना रहा हूं। मुझे ऑपरेटिंग सिस्टम (जिसे एंड्रॉइड में टूलबार और आईओएस में यूनाविगेशनबार कहा जाता है) में ऐपबार में एक ढाल जोड़ना है, इसे पूरा करने का कोई तरीका है। कृपया मुझे कुछ भी सामना करने में मदद करें।Xamarin रूपों में एक ग्रेडियेंट कैसे जोड़ें टूलबार और UINavigationBar
उत्तर
आप इस तरह एक कस्टम प्रस्तुत करना का उपयोग करना चाहिए,:
अपने PCL या साझा परियोजना में:
public class NavigationPageGradientHeader : NavigationPage
{
public NavigationPageGradientHeader(Page root) : base(root)
{
}
public static readonly BindableProperty RightColorProperty =
BindableProperty.Create(propertyName: nameof(RightColor),
returnType: typeof(Color),
declaringType: typeof(NavigationPageGradientHeader),
defaultValue: Color.Accent);
public static readonly BindableProperty LeftColorProperty =
BindableProperty.Create(propertyName: nameof(LeftColor),
returnType: typeof(Color),
declaringType: typeof(NavigationPageGradientHeader),
defaultValue: Color.Accent);
public Color RightColor
{
get { return (Color)GetValue(RightColorProperty); }
set { SetValue(RightColorProperty, value); }
}
public Color LeftColor
{
get { return (Color)GetValue(LeftColorProperty); }
set { SetValue(LeftColorProperty, value); }
}
}
[अद्यतन]
क्योंकि @Dehan Wjiesekara इस मुद्दे के लिए बेताब है मैंने एक उदाहरण बनाने के लिए समय निकाला है, आप इसेमें देख सकते हैं।
फिर अपने Android परियोजना में:
[assembly: ExportRenderer(typeof(NavigationPageGradientHeader), typeof(NavigationPageGradientHeaderRenderer))]
namespace YournameSpace.Droid
{
public class NavigationPageGradientHeaderRenderer : NavigationRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<NavigationPage> e)
{
base.OnElementChanged(e);
//run once when element is created
if (e.OldElement != null || Element == null)
{
return;
}
var control = (NavigationPageGradientHeader)this.Element;
var context = (MainActivity)this.Context;
context.ActionBar.SetBackgroundDrawable(new GradientDrawable(GradientDrawable.Orientation.RightLeft, new int[] { control.RightColor.ToAndroid(), control.LeftColor.ToAndroid() }));
}
}
}
आप अपने MainActivity
में FormsAppCompatActivity
का उपयोग करते हैं बस इस तरह gradient
में एक drawable जोड़ें:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<gradient
android:angle="180"
android:centerColor="#26C986"
android:endColor="#109F8D"
android:startColor="#36ED81"
android:type="linear" />
</shape>
फिर अपने Toolbar.axml
फ़ाइल कॉल में इस drawable:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/gradient"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
और में आप iOS परियोजना:
[assembly: ExportRenderer(typeof(NavigationPageGradientHeader), typeof(NavigationPageGradientHeaderRenderer))]
namespace YourNameSpace.iOS
{
public class NavigationPageGradientHeaderRenderer: NavigationRenderer
{
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
var control = (NavigationPageGradientHeader)this.Element;
var gradientLayer = new CAGradientLayer();
gradientLayer.Bounds = NavigationBar.Bounds;
gradientLayer.Colors = new CGColor[] { control.RightColor.ToCGColor(), control.LeftColor.ToCGColor() };
gradientLayer.StartPoint = new CGPoint(0.0, 0.5);
gradientLayer.EndPoint = new CGPoint(1.0, 0.5);
UIGraphics.BeginImageContext(gradientLayer.Bounds.Size);
gradientLayer.RenderInContext(UIGraphics.GetCurrentContext());
UIImage image = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
NavigationBar.SetBackgroundImage(image, UIBarMetrics.Default);
}
}
}
अंत में अपने
App.xaml.cs
फ़ाइल कॉल इस तरह इस पर नियंत्रण में
:
MainPage = new NavigationPageGradientHeader(new MainPage()) {
LeftColor = Color.FromHex("#109F8D"),
RightColor = Color.FromHex("#36ED81")
};
हाय @ विल्सन पर छवि को लागू करने का विचार है, मैं आपके समाधान का प्रयास करूंगा। कृपया मुझे बताएं कि असेंबली नाम कैसे ढूंढें। –
हाय @ विल्सन, मैंने आपके समाधान की कोशिश की है। लेकिन मुझे लाइन में <दिए गए कुंजी शब्दकोष में मौजूद नहीं था 'नामक एक त्रुटि मिली है।
यदि आप एक जिथब प्रोजेक्ट बना सकते हैं और इसे साझा कर सकते हैं .. यह अधिक मूल्यवान और स्पष्ट भी देगा –
- 1. UINavigationBar पर ग्रेडियेंट निकालें
- 2. खींचें और छोड़ें Xamarin में रूपों ..
- 3. Xamarin रूपों में ओवरलैप कैसे करें?
- 4. Xamarin रूपों के साथ वीडियो कैसे खेलें?
- 5. UINavigationBar को प्रोग्राम जोड़ें
- 6. कस्टम UIPickerView को UINavigationBar में कैसे जोड़ें?
- 7. गैर-सीसीके ड्रूपल रूपों में 'एक और आइटम जोड़ें'
- 8. सिस्टम कैसे जोड़ें। Xamarin में ड्रॉइंग?
- 9. प्राथमिकता में टूलबार को कैसे जोड़ें
- 10. xamarin रूपों में पिकर नियंत्रण में फ़ॉन्ट आकार
- 11. आईफोन ऐप में UINavigationBar में छवि कैसे जोड़ें
- 12. UINavigationBar
- 13. Xamarin रूपों का उपयोग कैसे करें 'बटन। सामग्री Layout संपत्ति?
- 14. ग्रहण में टूलबार में बटन जोड़ें/दोबारा जोड़ें?
- 15. Xamarin में एक से अधिक लेबल जोड़ें फॉर्म्स
- 16. UINavigationBar और UIBarButtonItem
- 17. टूलबार के दाईं ओर एक बटन कैसे जोड़ें?
- 18. ग्रहण में टूलबार में पूर्ववत/पुनः बटन कैसे जोड़ें?
- 19. Xamarin
- 20. एंड्रॉइड टूलबार में खोज दृश्य में बटन कैसे जोड़ें?
- 21. एंड्रॉइड एक ही गतिविधि में दो टूलबार जोड़ें?
- 22. मौजूदा टूलबार में प्रोग्रामेटिक रूप से नया NSToolbarItem कैसे जोड़ें?
- 23. एक UIBarButtonItem UINavigationBar
- 24. UINavigationBar
- 25. UINavigationBar
- 26. एंड्रॉइड: ऐपबारलाइट ग्रेडियेंट पृष्ठभूमि
- 27. ग्रेडियेंट
- 28. UISegmentedControl एक UINavigationBar/आइटम
- 29. UINavigationController और UINavigationBar
- 30. Spritekit में ग्रेडियेंट कैसे बनाएं?
अंतिम उपाय किसी छवि का उपयोग करने के लिए है, लेकिन मैं अत्यधिक यह सलाह नहीं देते । – LeRoy
@LeRoy क्या आपको एपबार –