【问题标题】:Change SeekBar progress based on EditText value根据 EditText 值更改 SeekBar 进度
【发布时间】:2014-01-15 03:30:33
【问题描述】:

我正在尝试根据EditText 中输入的数字更改SeekBar 的进度,但由于某种原因,EditText 值达到最大值,我无法在@987654325 中滑动拇指@。

我希望实现的目标:如果在 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 也是最大数量。

【问题讨论】:

  • 发布用于搜索栏的 xml 布局
  • 用 XML 更新了我的问题
  • seekbar 最大值为 120:android:max="120"
  • 是的,因为在我的代码中我添加了 70。从技术上讲,我需要它从 70 到 190,即 0 到 120。

标签: java android android-edittext seekbar


【解决方案1】:
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) {}
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    相关资源
    最近更新 更多