过去几个小时我试图通过代码设置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?它不会像这样工作。任何解决方案如何做到这一点?
答案 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);
}
的样式,因为可能性太大,我不知道你到底需要什么,因此我只从后面的代码设置SeekBar
和Width
值在您的问题中指定。