以编程方式设置SeekBar

时间:2017-03-22 12:19:17

标签: c# android xamarin seekbar

过去几个小时我试图通过代码设置SeekBar的宽度(必须由配置文件设置)。我试图通过"seekBar[i].SetMinimumWidth(600);"来设置它,我也试图用“ShapeDrawable”来做这个,但它没有用,这是我的例子我是怎么做的:

SeekBar sb = new SeekBar(this);
            sb.SetX(720 / 2);
            sb.SetY(1280 / 2);
            ShapeDrawable thumb = new ShapeDrawable(new OvalShape());
            thumb.SetIntrinsicHeight(64);
            thumb.SetIntrinsicWidth(600);
            sb.SetThumb(thumb);
            sb.SetBackgroundColor(new Color(255, 255, 255)); 

我也在考虑某种风格,但我不确定这样做是否可行。如何通过代码设置搜索条的宽度?

我还必须设置SeekBar的最小值和最大值,但我不知道如何使用代码设置这些属性。我知道,我可以简单地锁定它,如果这样的声明:

sb.ProgressChanged += (object sender, SeekBar.ProgressChangedEventArgs e) =>
                {
                    if (e.FromUser)
                    {
                       if (e.Progress < localSliderMax && e.Progress > localSliderMin)
                         //SomeWork
                    }
                };

但是,如果我需要例如最小值a -1或最大255?它不会像这样工作。任何解决方案如何做到这一点?

1 个答案:

答案 0 :(得分:0)

  

如何通过代码设置搜索条的宽度?

您可以设置它,例如:

sb.LayoutParameters = new ViewGroup.LayoutParams(900, ViewGroup.LayoutParams.WrapContent);
代码中的

900是SeekBar的宽度。有关控件布局的详细信息,请参阅ViewGroup.LayoutParams Class

  

但是,如果我需要例如最小值a -1或最大255?

您无法将最小值定义为-1。它是0。

要设置255,您可以将值设置为Max的{​​{1}}属性,以下是示例:

SeekBar

要设置protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); RelativeLayout mlayout = new RelativeLayout(this) { LayoutParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent) }; SeekBar sb = new SeekBar(this) { LayoutParameters = new ViewGroup.LayoutParams(900, ViewGroup.LayoutParams.WrapContent), Max = 255, }; mlayout.AddView(sb); SetContentView(mlayout); sb.ProgressChanged += Sb_ProgressChanged; } private void Sb_ProgressChanged(object sender, SeekBar.ProgressChangedEventArgs e) { var progress = e.Progress; System.Diagnostics.Debug.WriteLine(progress); } 的样式,因为可能性太大,我不知道你到底需要什么,因此我只从后面的代码设置SeekBarWidth值在您的问题中指定。