2017-11-30 2 views
1

Ich brauche in Kursivschrift und andererseits normal, so etwas wie dies eine Warnung mit einem Teil der Nachricht angezeigt:Xamarin.Forms - DisplayAlert mit Kursivschrift Attribute

var title = "Title"; 
var body = "This part in Italic. This part normal."; 
Application.Current.MainPage.DisplayAlert(title, body, "OK"); 

Mit dem Teil, der sagt: " Dieser Teil in Kursiv. " in Kursivschrift und die andere im normalen Text.

Ist es möglich zu tun? Wenn ja, wie?

Vielen Dank im Voraus!

+0

Als Alternative für ‚DisplayAlert‘ Sie eine benutzerdefinierte wollen stattdessen Steuerung Pop-up verwenden. Sieh dir das an: https://github.com/rotorgames/Rg.Plugins.Popup – EvZ

Antwort

0

Ich landete einen nativen Alarm-Controller wie folgt zu erstellen:

void PromptRichTextPopup(string title, string richMessage, string normalMessage, Action onOkCallback, Action onCancel = null) { 
      var vc = UIKit.UIApplication.SharedApplication.KeyWindow.RootViewController; 
      // take top presented view controller 
      while (vc.PresentedViewController != null) { 
       vc = vc.PresentedViewController; 
      } 

      var alertvc = UIAlertController.Create(title, string.Empty, UIAlertControllerStyle.Alert); 
      var leftAligned = new NSMutableParagraphStyle(); 
      leftAligned.Alignment = UITextAlignment.Left; 

      var colorTitle = new NSAttributedString(str: title, font: UIFont.BoldSystemFontOfSize(18), foregroundColor: Xamarin.Forms.Color.FromHex("#61acad").ToUIColor()); 

      alertvc.SetValueForKey(colorTitle, new NSString("attributedTitle")); 

      var margin = 5f; 
      var height = 30f; 
      var width = 256f; 

      var container = new UIView(new CGRect(margin, margin, width, height * 4)); 

      var message = new NSMutableAttributedString(str: richMessage, font: UIFont.ItalicSystemFontOfSize(14), foregroundColor: UIColor.Black); 
      message.Append(new NSMutableAttributedString(str: " " + normalMessage, font: UIFont.SystemFontOfSize(14), foregroundColor: UIColor.Black)); 
      var lblText = new UILabel(new CGRect(0, -(height/2), width, height * 2)) { AttributedText = message }; 
      lblText.LineBreakMode = UILineBreakMode.WordWrap; 
      lblText.Lines = 0; 
      container.AddSubview(lblText); 

      var cancel = new UIButton(new CGRect(0, height, width/2, height * 2)); 
      cancel.SetTitle("NO", UIControlState.Normal); 
      cancel.AddTarget((sender, e) => alertvc.DismissViewController(true, null), UIControlEvent.TouchUpInside); 
      cancel.SetTitleColor(UIColor.Blue, UIControlState.Normal); 
      if (onCancel != null) { 
       cancel.AddTarget((sender, e) => { 
        onCancel(); 
       }, 
       UIControlEvent.TouchUpInside); 
      } 
      container.AddSubview(cancel); 

      var ok = new UIButton(new CGRect(width/2, height, width/2, height * 2)); 
      ok.SetTitle("YES", UIControlState.Normal); 
      Action okAction = async() => { 
       ok.Enabled = false; 
       await uiHelper.RunBlocking(() => { 
        onOkCallback(); 
       }); 
       alertvc.DismissViewController(true, null); 
      }; 
      ok.SetTitleColor(UIColor.Blue, UIControlState.Normal); 
      container.AddSubview(ok); 
      ok.AddTarget((sender, e) => { 
       okAction(); 
      }, UIControlEvent.TouchUpInside); 

      var controller = new UIViewController(); 
      controller.View.AddSubview(container); 
      alertvc.SetValueForKey(controller, new NSString("contentViewController")); 
      vc.PresentViewController(alertvc, true, null); 
     } 
0

Sie können versuchen Benutzerdefinierte Renderer zu verwenden, um zu erreichen (eine benutzerdefinierte Ansicht und ein Renderer verwenden, um ein Pop-up für die Handhabung) es aber it is not recommended by iOS

Alerts vermitteln wichtige Informationen im Zusammenhang mit dem Zustand der Ihre Anwendung oder das Gerät und oft Feedback anfordern. Ein Alarm besteht aus eines Titels, einer optionalen Nachricht, einer oder mehrerer Schaltflächen und optionalen Textfeldern zum Erfassen von Eingaben. Abgesehen von diesen konfigurierbaren Elementen ist das visuelle Erscheinungsbild einer Warnung statisch und kann nicht angepasst werden.

This kann hilfreich für Sie sein.

Verwandte Themen