1

我添加了一个控件 Google.Android.Material.Slider ,当用户在上面选择一个值时我需要听。根据 Google 的文档 ( https://material.io/components/sliders/android#using-sliders ),侦听器可能是 addOnChangeListener 或 addOnSliderTouchListener 但这些事件无法在 Xamarin AndroidX Material 包上实现。

我正在使用包 Xamarin.Google.Android.Material 版本 1.3.0.1

还有另一个事件可以在更改时侦听并返回所选值或以其他方式实现它?

4

1 回答 1

0

你可以通过反射得到他的方法,然后听一听:</p>

Slider slider = FindViewById<Slider>(Resource.Id.slider1);
var method = Java.Lang.Class.ForName("com.google.android.material.slider.BaseSlider").GetDeclaredMethods().FirstOrDefault(x => x.Name == "addOnChangeListener");
method?.Invoke(slider, this); // this is implementing IBaseOnChangeListener

所以让你的活动实现IBaseOnChangeListener接口:

public class YourActivity: AppCompatActivity, IBaseOnChangeListener
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        ...
        Slider slider = FindViewById<Slider>(Resource.Id.slider1);
        var method = Java.Lang.Class.ForName("com.google.android.material.slider.BaseSlider").GetDeclaredMethods().FirstOrDefault(x => x.Name == "addOnChangeListener");
        method?.Invoke(slider, this); // this is implementing IBaseOnChangeListener           
    }     

    public void OnValueChange(Java.Lang.Object p0, float p1, bool p2)
    {
        Console.WriteLine("slide:" + p1);//p1 is the value you want
    }
}
于 2021-05-28T03:04:28.430 回答