3
A
回答
3
由於Xamarin.Forms不提供此功能,所以您需要通過爲每個平臺創建一個custom renderer來擴展標籤。通過這樣做,您可以訪問每個平臺上的本機控件(Android上的TextView和iOS上的UILabel),並在此處實施刪除線效果。
- 在Android上,您可以在TextView上使用STRIKE_THRU_TEXT_FLAG。在自定義渲染器中需要這樣的東西:
someTextView.PaintFlags = Paint.StrikeThruText;
- 在iOS上,您應該遵循Xamarin論壇上this thread的指導。基本上,您使用UIStringAttributes來實現預期的結果。
如果您不熟悉自定義渲染器,請參閱入門教程,瞭解如何自定義Entry控制here。
編輯:其實,你甚至可以使用效果來關閉它。更多信息here。
5
在這裏,你可以製作自己的控件(strikedLabel)並放置這段代碼。爲了讓更多的樂趣和flexiable您可以添加像(IsStriked,StrikeColor等)可綁定屬性,記得在標籤和BoxView中之間的順序
<Grid>
<Label VerticalOptions="Center" Text="Sample string" />
<BoxView HeightRequest="3"
VerticalOptions="Center"
Opacity="0.5"
Color="Aqua" />
</Grid>
2
這是非常簡單的使用效果就以下事項步驟:
的XAML
<Label Text="{Binding TotalReatilAmount}" >
<Label.Effects>
<Helpers:LineThroughEffect />
</Label.Effects>
</Label>
不要忘了把下面一行在XAML頭
xmlns:Helpers="clr-namespace:MyNameSpace.Helpers"
創建一個類從RoutingEffect
public class LineThroughEffect : RoutingEffect
{
public LineThroughEffect() : base("MyNameSpace.Helpers.PlatformLineThroughEffect") { }
}
繼承創建渲染爲平臺特定
的iOS
[assembly: ResolutionGroupName("MyNameSpace.Helpers")]
[assembly: ExportEffect(typeof(PlatformLineThroughEffect), nameof(PlatformLineThroughEffect))]
namespace MyNameSpace.iOS.Renderers
{
public class PlatformLineThroughEffect : PlatformEffect
{
protected override void OnAttached()
{
SetUnderline(true);
}
protected override void OnDetached()
{
SetUnderline(false);
}
protected override void OnElementPropertyChanged(System.ComponentModel.PropertyChangedEventArgs args)
{
base.OnElementPropertyChanged(args);
if (args.PropertyName == Label.TextProperty.PropertyName ||
args.PropertyName == Label.FormattedTextProperty.PropertyName)
{
SetUnderline(true);
}
}
private void SetUnderline(bool underlined)
{
try
{
var label = (UILabel)Control;
if (label != null)
{
var text = (NSMutableAttributedString)label.AttributedText;
if (text != null)
{
var range = new NSRange(0, text.Length);
if (underlined)
{
text.AddAttribute(UIStringAttributeKey.StrikethroughStyle,
NSNumber.FromInt32((int)NSUnderlineStyle.Single), range);
}
else
{
text.RemoveAttribute(UIStringAttributeKey.StrikethroughStyle, range);
}
}
}
}
catch (Exception ex)
{
ex.Track();
}
}
}
}
相關問題
- 1. LWUIT Painter:如何在圖像標籤上繪製一條線?
- 2. Xamarin形式繪製簽名
- 3. 在窗體上繪製線條網格
- 4. Windowsforms:如何在DataGridView上繪製線條?
- 5. 如何在圖表上繪製線條?
- 6. 如何在iPad上繪製線條圖?
- 7. 如何在OpenLayers3上繪製連接標籤到其位置的線條
- 8. Android-Need繪製一條對角線,如標籤
- 9. 如何在android中繪製一條線?
- 10. 如何在UICollectionView中繪製一條線?
- 11. 在gtk.TextView上繪製線條
- 12. 如何在Canvas中的另一個上繪製一條線?
- 13. 在UIImage上繪製線NOT UIImageView - Xamarin iOS
- 14. 在c#圖上繪製一條線
- 15. 在地圖上繪製一條線
- 16. 如何在matplotlib中的軸上繪製一條線(在圖座標中)?
- 17. 如何在WPF中現有的BitmapSource上繪製一條線?
- 18. 如何在Android上的ImageView中繪製一條線?
- 19. 如何在bb中的編碼圖像上繪製一條線?
- 20. 我如何在自己的佈局上繪製一條線?
- 21. 在WPF中,你如何在WindowsFormsHost上繪製一條線?
- 22. 使用座標繪製一條線
- 23. 在DrawingFrame上繪製線條與外線
- 24. 在左側的線條末端繪製標籤
- 25. 更改座標軸格式並添加線條以繪製
- 26. 如何在HTML文本上繪製一條線
- 27. 如何使用quantmod在chartSeries圖上繪製一條線?
- 28. 如何在窗體上繪製一條線?
- 29. 如何使用點在QPixmap上繪製一條線
- 30. 上面繪製一條線/下面plotyy
注:應該是'someTextView.PaintFlags = PaintFlags.StrikeThruText;'' PaintFlags'是引用的適當枚舉,而不是'Paint' –