我有一些文字和某些词想加上双下划线的效果。
<Label Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit."/>
我试图在带标签的FlexLayout中使用BoxView,但是由于这个原因,出现了自动换行问题。
<FlexLayout JustifyContent="Start" AlignContent="Start" AlignItems="Start" FlowDirection="LeftToRight" Wrap="Wrap" >
<Label Text="Lorem " FontAttributes="Italic"/>
<StackLayout Spacing="0">
<Label Text="ipsum" FontAttributes="Italic"/>
<BoxView WidthRequest="2" BackgroundColor="#747474" Color="#747474" HeightRequest="0.5"/>
<BoxView WidthRequest="2" BackgroundColor="#747474" Color="#747474" Margin="0,2,0,0" HeightRequest="0.5"/>
</StackLayout>
<Label Text=" dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit." FontAttributes="Italic"/>
</FlexLayout>
您可以使用Custom Renderer并在特定平台上实施。
此外,默认情况下,iOS中提供了双下划线。但是在Android中,它不可用。
using Foundation;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using App34.iOS;
[assembly:ExportRenderer(typeof(Label),typeof(MyLabelRenderer))]
namespace App34.iOS
{
public class MyLabelRenderer:LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if(Control!=null)
{
var content = Control.Text;
UIStringAttributes attributes = new UIStringAttributes() { UnderlineStyle = NSUnderlineStyle.Double,UnderlineColor=UIColor.Red };
NSMutableAttributedString str = new NSMutableAttributedString(content, attributes);
Control.AttributedText = str;
}
}
}
}
样式用于单个下划线。
using Android.Content;
using Android.Widget;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using App34.Droid;
using Android.Text;
[assembly: ExportRenderer(typeof(Label), typeof(MyLabelRenderer))]
namespace App34.Droid
{
public class MyLabelRenderer : LabelRenderer
{
public MyLabelRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if(Control!=null)
{
Control.SetText(Html.FromHtml("<u>" + Control.Text +"</u>",FromHtmlOptions.ModeLegacy),TextView.BufferType.Normal);
}
}
}
}