2016-05-03 1 views
1

私はXamarin.Formsアプリケーションを作成しています。値が変わったときにボリュームコマンドをデバイスに送信する必要があるボリュームスライダがあります。ボリュームはTCP接続を介して送信され、デバイスによって検証されなければならず、デバイスは常にリアルタイムで反応するとは限りません(双方向通信の場合も同様に変更が監視されています)。ユーザーが親指を離れるときにValueChangedイベントを発生させたいだけです。私はOnElementChangedオーバーライドし、falseにスライダーの連続プロパティを設定するのiOSのカスタムレンダラを作った:iOS上のUISlidersの連続フラグとAndroidの対応はありますか?

protected override void OnElementChanged(ElementChangedEventArgs<Slider> e) { 
     base.OnElementChanged(e); 

     if (Control == null) return; 

     Control.MinimumTrackTintColor = UIColor.FromRGB(0xE6, 0x00, 0x06); 
     Control.Continuous = false; 
    } 

これは魔法のように動作します。私はAndroidでも同様のことをしたいと思っていますが、どうやってそれを行うのか分かりません。同等のフラグ、またはProgressDrawableコントロールでこの動作を呼び出せる関数がありますか?

+0

私があれば逆にブラケットを追加するために提案された変更に反対しなければなりません。私はこれがコードの可読性や保守性を向上させるとは思わない。反転したifの意図はかなり明確です。私はこれがResharperからのデフォルトの書式であるという事実は、それが変更を必要としないという私自身の控えめな主張をサポートしていると思います。 – bodangly

答えて

3

だから、Android上でXamarin.Forms Sliderは、このようにあなたがデフォルトSliderRendererの正常な動作ですProgressChangedイベント(対StopTrackingTouchイベントからSliderの値を更新したい、SeekBarです。

あなたが ProgressChangedイベントを上書きする(デフォルト SliderRendererイベントを置き換え)とクラスレベルのVARにProgressValueを保存することができ SliderRendererカスタムでそう

次に(追加)StopTrackingTouchイベントを上書きして、フォームのを設定をProgressChangedイベントからローカル変数に保存した値に置き換えます。

はProgressChanged:https://developer.xamarin.com/api/event/Android.Widget.SeekBar.ProgressChanged/

StopTrackingTouch:https://developer.xamarin.com/api/event/Android.Widget.SeekBar.StopTrackingTouch/

+0

素晴らしいです、ありがとうございます! – bodangly

+0

@bodangly問題なし、幸せなXammieコーディング – SushiHangover

関連する問題