如何根据另一个同时更改一个搜索栏的值

How to simultaneously change the value of one seekbar based on other

三个搜索栏放在一个 Activity 上。它们的最大值都是 100。我需要这三个的总和是 100。

seek1=50 且 seek2=45 时,seek3 必须为 5。 当我滑动 seek1 到 55 seek3 必须有 0. etc.

我该如何编码?

抱歉,这是我的代码:

//01
   final SeekBar seekBar01 = (SeekBar)findViewById(R.id.seek01);
            final TextView seekBar01Value = (TextView)findViewById(R.id.txt01val);
            seekBar01.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                    seekBar01Value.setText(String.valueOf(progress));
                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {

                }

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {

                }
            });
    //02
            SeekBar seekBar02 = (SeekBar)findViewById(R.id.seek02);
            final TextView seekBar02Value = (TextView)findViewById(R.id.txt02val);
            seekBar02.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                    seekBar02Value.setText(String.valueOf(progress));
                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {

                }

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {

                }
            });

//03
            SeekBar seekBar03 = (SeekBar)findViewById(R.id.seek03);
            final TextView seekBar03Value = (TextView)findViewById(R.id.txt03val);
            seekBar03.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                    seekBar03Value.setText(String.valueOf(progress));
                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {

                }

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {

                }
            });

我可以在相应的 TextView 上显示值,但不知道如何从其他搜索栏 onProgressChanged 更改另一个搜索栏进度。

OnSeekBarChangeListener 设置为您的搜索栏。当一个改变时,使用 setProgress

将值设置为其他值

问题是因为 SeekBar 的延迟声明。 如果收集所有SeekBar seekBarXX = (SeekBar)findViewById(R.id.seekXX);早于 Change listeners 所有工作都按预期进行。 对不起愚蠢。 这是代码:

final SeekBar seekBar01 = (SeekBar)findViewById(R.id.seek01);
final SeekBar seekBar02 = (SeekBar)findViewById(R.id.seek02);
final SeekBar seekBar03 = (SeekBar)findViewById(R.id.seek03);

seekBar01.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {                   
                seekBar02.setProgress(100-seekBar01.getProgress());
            }
...
        });