2017-01-14 13 views
0

私は約1週間からXamarinに入っていて、ボタンの中にローディングアイコンを作成する可能性について質問があります。ローディングインジケータ付きXamarinフォームボタン

私はこれに似何かを達成したいと思います:溶液中のアクティビティインジケータを使用するのは悪くないだろうので、私は、FontAwesomeでこの効果を達成しようとしているが、それをアニメーション化問題を有していた https://jsfiddle.net/mr8fwtcv/

マイボタンがスタックレイアウトの内部に配置され、そしてここでのコードです:

var loginButton = new Button 
{ 
    BackgroundColor = Color.FromHex("689F38"), 
    TextColor = Color.White, 
    HeightRequest = 46, 
    Text = "Log in", 
    FontAttributes = FontAttributes.Bold, 
    FontSize = 18, 
    Margin = margin 
}; 

私はすでにいくつかのプラグイン/ソリューションを探していましたが、いずれも見つけることができませんでした。 ありがとうございます。

+1

ボタンの上に['ActivityIndi​​cator'](https://developer.xamarin.com/api/type/Xamarin.Forms.ActivityIndi​​cator/)を追加し、その上に' Text'プロパティを設定してみましたか? 'IsBusy'(またはあなたがバインドしたもの)が' true'になったら、 'Button'を空の文字列に変換しますか? – Demitrian

+1

私はDemitrianがButtonRemdererを推奨または作成し、それをネイティブに追加することを行います。 OpropretyChangingオーバーライドでは、その機能を処理できます。 – BrewMate

答えて

5

複数のコントロールを配置するには、レイアウトを使用する必要があります。 CustomRenderersを探していない場合は、RelativeLayoutがあり、その中にButtonとActivity Indicatorの両方があります。また、IsBusyがtrueのときにテキストをstring.Emptyに設定するボタンテキスト用のConverterを作成する必要があります。

例:また

<StackLayout> 
    <ActivityIndicator IsVisible="{Binding IsBusy}" IsRunning="{Binding IsBusy}"> 
    <Button Text="{Binding ButtonText, Converter={StaticResource ButtonTextConverter}, ConverterParameter={Binding IsBusy}> 
<StackLayout> 

あなたはカスタムコントロールとしてこれを作成することができ、複数の場所でこれを使用することを計画している場合。

カスタムコントロールコードhereをチェックアウトすることができます。

フルプロジェクトはhereです。

関連する問題