我试图根据 EditText
中输入的数字更改 SeekBar
的进度,但由于某种原因,EditText
值变为到最大,我无法在 SeekBar
中滑动拇指。
我希望实现的目标:如果在 EditText
中输入的值在 70 到 190 之间(包括这两个数字),则将 SeekBar
的进度更改为该值.
部分Java代码:
etOne = (EditText) findViewById(R.id.etSyst);
etOne.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
String filtered_str = s.toString();
if (Integer.parseInt(filtered_str) >= 70 && Integer.parseInt(filtered_str) <= 190) {
sbSyst.setProgress(Integer.parseInt(filtered_str));
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
部分 XML:
<SeekBar
android:id="@+id/syst_bar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:progress="0"
android:max="120"
android:progressDrawable="@drawable/progress_bar"
android:secondaryProgress="0"
android:thumb="@drawable/thumb_state" />
我为每个值添加 70,因为 SeekBar
从 0 开始,但我希望它从 70 开始。
使用上面的代码后,如下所示:
SeekBar
处于最大数量,EditText
也处于最大数量。
最佳答案
etOne = (EditText) findViewById(R.id.etSyst);
etOne.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
int i = Integer.parseInt(s.toString());
if (i >= 70 && i <= 190) {
sbSyst.setProgress( i - 70); // This ensures 0-120 value for seekbar
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
关于java - 根据 EditText 值更改 SeekBar 进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20802397/