【问题标题】:how to limit seekbar如何限制搜索栏
【发布时间】:2010-08-16 06:07:45
【问题描述】:

我想将 SeekBar 的最大和最小限制分别设置为 50 和 20。

SeekBar 有一个直接选项 top 提供最大值,但是如何将其最小值设置为 20 而不是 0?

【问题讨论】:

    标签: android android-sdk-2.1 seekbar


    【解决方案1】:

    在 SeekBar 你 can set only max value.

    <SeekBar android:id="@+id/SeekBar01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:max="50"/>
    

    而且, 您不能直接将最小值设置为搜索栏。

     SeekBar mSeekbar = (SeekBar) findViewById(R.id.SeekBar01);
    
        mSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
        {
           public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
           {
                length_edit.setText(Integer.toString(progress + 20));
           }
    
          public void onStartTrackingTouch(SeekBar seekBar) {}
    
          public void onStopTrackingTouch(SeekBar seekBar) {}
        });
    

    当您看到最小进度时,您可以用我想要的 min 求和 - 在您的情况下为 20。

    【讨论】:

    • 谢谢你的代码,它工作正常,除了我用来设置 progrees 值的 textview 没有显示并且应用程序崩溃。
    • 对不起,伙计,请假,您没有回复..我赞成并接受了答案...享受
    • @Paresh:将最小值设置为 seekbar 的逻辑很好。伟大的。 . .
    • 兄弟,我们可以将文本设置为任何view
    • @PareshMayani 没有冒犯。我刚才是开玩笑的。快乐的 Androiding :)
    【解决方案2】:

    将最大值设置为 30,并将从 SeekBar 读取的值加 20。

    【讨论】:

    【解决方案3】:

    执行此操作的最简单方法是将其限制在 SeekBar.OnSeekBarChangeListener() 中以供您的 SeekBar 使用。

    首先,您需要创建具有最小值或默认值的字段。然后在创建SeekBar时设置这个值:

    private int fillDefault;
    

    FragmentonCreateView()ActivityonCreate 中:

    fillDefault = 20;
    fillSeekBar.setProgress(fillDefault);
    

    其次,为它实现监听器:

    fillSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                // Notification that the progress level has changed.
                if (progress < fillDefault){
                    seekBar.setProgress(fillDefault); // magic solution, ha
                }
            }
    
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                // Notification that the user has started a touch gesture.
            }
    
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                // Notification that the user has finished a touch gesture.
            }
        });
    

    它有效。简单又棒:D

    【讨论】:

    • 当您将填充左侧设置为 0dp 并希望避免拇指与搜索栏的末端重叠时,此解决方案是理想的,即: if(progress == 0){ seekBar.setProgress(1); }
    【解决方案4】:

    例如;

     public static int LENGTH_MIN_VALUE = 20;
     public static int LENGTH_MAX_VALUE = 50;
     SeekBar seekBar = (SeekBar) findViewById(R.id.passwordSeekBar);
        seekBar.setMax(LENGTH_MAX_VALUE);
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if(progress <= Constract.PASSWORD_LENGTH_MIN_VALUE){
                    progress = Constract.PASSWORD_LENGTH_MIN_VALUE + progress;
                }
    
                String numberAsString = String.valueOf(progress);
                seekNumberView.setText(numberAsString);
            }
    
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {}
    
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {}
        });
    

    【讨论】:

      【解决方案5】:

      我在这里回答了这个问题:How to set seekbar min and max value

      通过简单的数学运算,您可以设置搜索栏的最小值、最大值甚至步长。

      希望这会有所帮助!

      【讨论】:

        【解决方案6】:

        你可以试试这个:

        seekBar.setMax(max_value-min_value);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-01
          • 1970-01-01
          • 2021-12-08
          • 1970-01-01
          • 2021-03-11
          • 2014-02-25
          • 2012-09-24
          • 1970-01-01
          相关资源
          最近更新 更多