Android SeekBar setOnSeekBarChangeListener

use*_*729 36 android seekbar

我想知道android SeekBars OnSeekBarChangeListener的行为.特别是onProgressChanged方法是否仅针对搜索栏上的第一次和最后一次触摸进行通知?

我正在尝试刷新应该显示SeekBar当前进度的TextView.但TextView只是在第一次触摸和最后一次触摸时更新.调试这证实了我的假设,这个方法被调用两次:(我想要的是TextView显示SeekBar中的每个进度变化.

简而言之:我正在寻找一种可能获得进步监听器的可能性.

小智 81

我希望这能帮到您:

final TextView t1=new TextView(this); 
t1.setText("Hello Android");        
final SeekBar sk=(SeekBar) findViewById(R.id.seekBar1);     
sk.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {       

    @Override       
    public void onStopTrackingTouch(SeekBar seekBar) {      
        // TODO Auto-generated method stub      
    }       

    @Override       
    public void onStartTrackingTouch(SeekBar seekBar) {     
        // TODO Auto-generated method stub      
    }       

    @Override       
    public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {     
        // TODO Auto-generated method stub      

        t1.setTextSize(progress);
        Toast.makeText(getApplicationContext(), String.valueOf(progress),Toast.LENGTH_LONG).show();

    }       
});             
Run Code Online (Sandbox Code Playgroud)

  • 此外...在同一时间段内多次发布相同的代码片段也被视为有点垃圾. (3认同)

Gal*_*e33 12

应该在每次改变进度时调用onProgressChanged(),而不仅仅是第一次和最后一次触摸(这就是为什么你有onStartTrackingTouch()和onStopTrackingTouch()方法).

确保您的SeekBar具有多于1个值,也就是说您的MAX> = 3.

在你的onCreate:

 yourSeekBar=(SeekBar) findViewById(R.id.yourSeekBar);
 yourSeekBar.setOnSeekBarChangeListener(new yourListener());
Run Code Online (Sandbox Code Playgroud)

你的听众:

private class yourListener implements SeekBar.OnSeekBarChangeListener {

        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
                            // Log the progress
            Log.d("DEBUG", "Progress is: "+progress);
                            //set textView's text
            yourTextView.setText(""+progress);
        }

        public void onStartTrackingTouch(SeekBar seekBar) {}

        public void onStopTrackingTouch(SeekBar seekBar) {}

    }
Run Code Online (Sandbox Code Playgroud)

请分享一些代码和日志结果以获得更多帮助.


Ste*_*han 5

每次移动光标时,都会调用onProgressChanged。

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    textView.setText(String.valueOf(new Integer(progress)));        
}
Run Code Online (Sandbox Code Playgroud)

因此,textView应该显示进度,并在移动搜索栏时始终更改。