वर्तमान में एक ऐसे प्रोजेक्ट पर काम कर रहा है जहां मैं AppCompat का उपयोग करना चाहता हूं और अधिकांश पृष्ठों पर एक शीर्षक सेटिंग शीर्षक और उपशीर्षक रखना चाहता हूं।Xamarin.Forms कस्टम एंड्रॉइड नेविगेशन पेजरेंडर शीर्षक और उपशीर्षक
यह AppCompat का उपयोग करके काम नहीं करता है - न ही गुणों को सेट करना और न ही कस्टम व्यू का उपयोग करना।
ऐपकंपेट का उपयोग नहीं करते समय दोनों काम अपेक्षित हैं। धन्यवाद @jimmgarr: पूर्ण स्रोत कोड यदि आप उत्सुक :)
using System.ComponentModel;
using Android.App;
using Android.Widget;
using App1.Droid.Renderers;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
#if __APPCOMPAT__
using NavigationRenderer = Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer;
#else
using NavigationRenderer = Xamarin.Forms.Platform.Android.NavigationRenderer;
#endif
[assembly: ExportRenderer(typeof(NavigationPage), typeof(NavigationPageRenderer))]
namespace App1.Droid.Renderers
{
public class NavigationPageRenderer : NavigationRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<NavigationPage> e)
{
base.OnElementChanged(e);
SetCustomView(e.NewElement.CurrentPage.GetType().Name);
}
private void SetCustomView(string view)
{
var activity = (Activity)Context;
#if __APPCOMPAT__
var actionBar = ((FormsAppCompatActivity)Context).SupportActionBar;
#else
var actionBar = activity.ActionBar;
#endif
actionBar.Title = view;
actionBar.Subtitle = " -> " + view;
var abv = new LinearLayout(activity)
{
Orientation = Orientation.Vertical
};
var main = new TextView(activity)
{
Text = view,
};
main.SetTextColor(Color.Aqua.ToAndroid());
main.SetPadding(4, 4, 2, 6);
abv.AddView(main);
abv.AddView(new TextView(activity)
{
Text = " -> " + view
});
actionBar.SetDisplayShowCustomEnabled(true);
actionBar.CustomView = abv;
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName.Equals("CurrentPage"))
{
SetCustomView(((NavigationPage)sender).CurrentPage.GetType().Name);
}
}
}
}
संपादित कर रहे हैं here तो बस एप्लिकेशन को चलाने के लिए उपलब्ध है। AppCompbat और "सामान्य मोड" के बीच वैकल्पिक रखने के लिए कोड को थोड़ा सा बदल दिया। कोड here
मदद के लिए धन्यवाद - एक आकर्षण की तरह काम करता है! AppCompat नहीं चलाते समय इसे बनाने के लिए कुछ कंपाइलर स्टेटमेंट्स और निर्देशों का उपयोग करके निर्देशों का उपयोग किया गया। [Gist] के रूप में उपलब्ध (https://gist.github.com/joacar/03b36c6fee955f7aed0a7b7b9e65225d) – joacar