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を使用して目的の結果を達成します。
カスタムレンダリングを初めてお使いの方は、エントリコントロールhereのカスタマイズ方法に関する入門チュートリアルをご覧ください。
編集:実際には、エフェクトを使用してこれをオフにすることさえできます。詳細情報here。
5
ここでは、独自のコントロール(strikedLabel)を作成してこのコードを配置することができます。 (...などIsStriked、StrikeColor、)それをより楽しくする、あなたのようなバインド可能なプロパティを追加することができflexiableするには、ラベルと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") { }
}
から継承する1つのクラスを作成するプラットフォームのための特定の
をレンダリング作成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. XamarinフォームWinPhone - ラベルテキストの下線WinPhoneを作成する方法?
- 2. Windowsフォーム:DataGridViewに線や線を描画する方法は?
- 3. イメージに線を描く方法は?
- 4. Googleマップに線を描く方法
- 5. OpenGLのアンドロイドで線を描く方法
- 6. UITableViewの線を描く方法
- 7. 線を描く別の方法
- 8. Googleのコンボチャートで線を描く方法
- 9. Matlabで曲線を描く方法
- 10. Quartzでダブルダッシュ線を描く方法
- 11. SVGで縦線を描く方法
- 12. Webformsで線を描く方法は?
- 13. libgdxでグリッド線を描く方法
- 14. アンドロイドで線グラフを描く方法
- 15. アンドロイドで曲線を描く方法
- 16. MonoGame/XNAで破線を描く方法
- 17. 2本の平行線の間に直線の垂線を描く方法は?
- 18. グラフィックを描くには? - xamarin
- 19. JavaFx 2.x:破線や点線を描く方法は?
- 20. Xamarinのラベルテキストの最大長を設定する方法
- 21. アンドロイドにカスタム境界線描画可能を追加する - Xamarinフォーム
- 22. ノード内の線を見ずにテキストノードと交差する線を描く方法
- 23. Javaの対角線に円を描く方法は?
- 24. PHP gdライブラリ、既存のPNG画像に線を描く方法
- 25. ベジェ線を描くのに最適な方法
- 26. マウスの移動に基づいて線を描く方法
- 27. キャンバスに破線の四角形を描く方法は?
- 28. ガラスの上に線を描く方法は?
- 29. Python:2Dカーブに通常の線を描く方法は?
- 30. Android - 線を描く
注: 'someTextView.PaintFlags = PaintFlags.StrikeThruTextであるべきです。' ' PaintFlags'は 'Paint'ではなく、参照するための適切なenumです。 –