【问题标题】:How to set first Seekbar process value is to assign initial value of second Seekbar in Android?如何设置第一个 Seekbar 进程值是在 Android 中分配第二个 Seekbar 的初始值?
【发布时间】:2015-09-24 15:57:20
【问题描述】:

我有两个搜索栏。我想设置第一个 Seekbar 过程值是分配第二个 Seekbar 的初始值。我的确切要求是,我想用三个 seekbar 覆盖 0 到 100。例如:如果 FirstSeekBar 覆盖 1 到 30,则 Second SeekBar 自动启动 30 到 100。如果我在第二个 seekbar 中设置过程值 60,第三个 Seekbar 自动启动 60 到 100。请帮我解决这个问题。

activity.xml

<SeekBar
    android:id="@+id/firstSeekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"/>
<SeekBar
    android:id="@+id/secondSeekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp" />
<SeekBar
    android:id="@+id/thirdSeekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp" />

SeekBarActivity.java

firstSeekBar.setOnSeekBarChangeListener(
            new SeekBar.OnSeekBarChangeListener() {
                int firstPgrValue;
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                    firstPgrValue = progress;
                    secondSeekBar.setEnabled(true);
                    txtFirstSeek.setText("First (" + progress + " / " + firstSeekBar.getMax() + ")");
                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {
                    shortMessage(MainActivity.this, "Progress Start");
                }

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {
                    if (firstPgrValue == 0) {
                        secondSeekBar.setEnabled(false);
                        redSeekBar.setEnabled(false);
                    }
                    txtFirstSeek.setText("First (" + firstPgrValue + " / " + firstSeekBar.getMax() + ")");
                    shortMessage(MainActivity.this, "Progress Stopped");
                }
            }
    );

    secondSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        int secondPgrValue;
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            secondPgrValue = progress;
            thirdSeekBar.setEnabled(true);
            txtSecondSeek.setText("Second (" + progress + " / " + secondSeekBar.getMax() + ")");
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            shortMessage(MainActivity.this, "Progress Start");
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        if (secondPgrValue == 0) {
           thirdSeekBar.setEnabled(false);
        }
            txtSecondSeek.setText("Second (" + secondPgrValue + " / " + secondSeekBar.getMax() + ")");
            shortMessage(MainActivity.this, "Progress Stopped");
        }
    });
thirdSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        int thirdPsrValue;
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            thirdPsrValue = progress;
            txtRedSeek.setText("Third (" + progress + " / " + redSeekBar.getMax() + ")");
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            shortMessage(MainActivity.this, "Progress Start");
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            txtThirdSeek.setText("Third (" + thirdPsrValue + " / " + thirdSeekBar.getMax() + ")");
            shortMessage(MainActivity.this, "Progress Stopped");
        }
    });

【问题讨论】:

    标签: android android-seekbar


    【解决方案1】:

    不幸的是,香草SeekBar 没有默认的min 字段。我将此值与不整洁且不方便的 int 字段并行存储。您可以扩展该类,或者像我一样做,但在我看来,您描述的是一种常见情况,许多RangeBar 实现已经提供了该功能。

    我的确切要求是,我想用三个 seekbar.Ex 覆盖 0 到 100: 如果 FirstSeekBar 覆盖 1 到 30,则 Second SeekBar 会自动启动 30 到 100。如果我在第二个搜索栏第三个中设置过程值 60 Seekbar 自动启动 60 到 100。

    https://github.com/yahoo/android-range-seek-bar 只有两个拇指,应该是理想的。 Others 提供无限大拇指。

    【讨论】:

    • 我最近用了Larpon的第二个,效果很好,还有其他的。
    • 我很欣赏这种情绪,但目前我没有计划上脸书
    猜你喜欢
    • 2012-04-05
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多