如何在触摸后自行更新搜索栏

时间:2011-01-13 11:29:24

标签: android refresh seekbar

我希望这是一个简单的问题。

我有一个搜索栏,我想限制它可以设置的范围。此范围可能会根据其他因素(其他搜索栏的值等)而改变。

搜索栏是一个简单的0到100范围,并定义了一个百分比。我需要这个值是最小值,范围从0%(正常搜索栏操作)到更高值(例如50%)。

代码执行计算并根据其他变量确定最小值。

当我将搜索栏拖动到此阈值以下时,我希望它将其值重置为该最小值。这是一些示例代码

seek6.setOnTouchListener( new OnTouchListener() { 

@Override
public boolean onTouch(View v, MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_UP) {        
        int CurrentLevel = seek6.getProgress();
        if (CurrentLevel < 30) CurrentLevel = 30;
        seek6.setProgress(CurrentLevel);
            }

    return false;
    }   
     });

因此,在此示例中,如果我拖动到30以下,则该值将重新设置为30。

如果我拖到30以上,一切都很好。如果我拖动到30标记以下,那么搜索条GetValue()将返回30,但搜索条显示较低的值。

例如,如果我将它一直向下拖动到0,则返回值为30,但在屏幕上显示为0.

如何让搜索栏自动重新显示在30位置?

我试图改变焦点,从另一种方法更新搜索栏。到目前为止,没有任何工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

经过多次艰苦的搜寻后,我得到了答案。

seek6.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
    public void onStopTrackingTouch(SeekBar seekBar){               
        // TODO My code goes here

        int CurrentLevel = seek6.getProgress();
        if(CurrentLevel < 30)
            CurrentLevel = 30;
        seek6.setProgress(CurrentLevel);

    }

    public void onStartTrackingTouch(SeekBar seekBar){}

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){}
});

感谢任何一直在研究此事的人。

答案 1 :(得分:0)

我认为它会对你有帮助..

    final TextView t1 = (TextView) findViewById(R.id.t1);
    final SeekBar sk = (SeekBar) findViewById(R.id.seekBar1);

    sk.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){

        int p = 0;

        @Override
        public void onStopTrackingTouch(SeekBar seekBar){
            if(p < 30){
                p = 30;
                sk.setProgress(p);
            }
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar){}

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){
            p = progress;
            t1.setTextSize(p);
        }
    });