Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SeekBar需要一个可多次单击的Ticker_Android_Onclick_Onclicklistener_Seekbar - Fatal编程技术网

Android SeekBar需要一个可多次单击的Ticker

Android SeekBar需要一个可多次单击的Ticker,android,onclick,onclicklistener,seekbar,Android,Onclick,Onclicklistener,Seekbar,我有一个seekBar,并希望有一个简单的增量为1的股票代码按钮。到目前为止,我的文本只更新一次。但是,如果我的seekBar被更改,我可以再次勾选+1。如果您想查看更多代码,请告诉我。其他一切都可以正常工作 ib2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { int addOne = 1;

我有一个seekBar,并希望有一个简单的增量为1的股票代码按钮。到目前为止,我的文本只更新一次。但是,如果我的seekBar被更改,我可以再次勾选+1。如果您想查看更多代码,请告诉我。其他一切都可以正常工作

 ib2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            int addOne = 1;
            progress = seekBar.getProgress(); 
            progress = progress + addOne;
            if(progress  < 18)
                textView1.setText(":  "+ 18);
            textView1.setText(":  " + progress);
         ib2.setClickable(true);

        }
    });     
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
      {

            @Override
          public void onProgressChanged(SeekBar seekBar,int progresValue, boolean fromUser) 
          {
                progresValue = 18;
            progress = progresValue;

            if(progress < 18)
            {
                 progress = 18;
                 textView1.setText(":  "+ progress);
            }
          }

          @Override
          public void onStartTrackingTouch(SeekBar seekBar) 
          {
                textView1.setText(":   ");
                progress= seekBar.getProgress();
                textView1.setText(":  " + progress);
          }

          @Override
          public void onStopTrackingTouch(SeekBar seekBar)
          {
              if(seekBar.getProgress() < 18)
              {
                  progress = 18;
                 textView1.setText(":  " + progress );

              }
              else
              {

              textView1.setText(":  " + seekBar.getProgress());
              }
          }
      });

您的问题是,您在递增SeekBar后忘记设置其进度。您必须添加:

seekBar.setProgress(progress);
在onClick方法的末尾

顺便说一句,您的代码可以简化很多,下面的代码与您的代码完全相同,但方式更短:

ib2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        seekBar.setProgress(seekBar.getProgress() + 1);
    }
});     

seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar,int progresValue, boolean fromUser) {
        if(progresValue < 18) {
            textView1.setText(":  "+ 18);
        } else {
            textView1.setText(":  "+ progresValue);
        }
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        textView1.setText(":  " + seekBar.getProgress());
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {}
});

为什么在onProgressChanged方法的开头将ProgressValue设置为18?我正在尝试设置最小值。我不希望值低于18。这段代码是在一段时间后我随机猜测和检查的地方复制粘贴的,所以其中一些可能没有意义。我已经编辑了我的答案,并添加了您代码的简化版本。它应该更容易理解和使用。希望它能帮助你。再次感谢!无论如何,是否要在18时启动搜索栏?在实际条上?您不能设置SeekBar的最小值,该值始终从0开始。但是,每次获得或设置进度时,您可以添加18。这个偏移将使你的搜索杆在18开始。请记住,这也会使你的最大值增加18。如果需要,可以在XML定义中或以编程方式设置最大值。