如何通过更改EditText中的值来更改搜索栏进度位置?

时间:2013-02-12 09:58:38

标签: android seekbar

  I want to change the seekbar progress position by changing the value in EditText dynamically. please help me out from this issue .

         <EditText  
                android:id="@+id/editText1"   
                android:layout_width="120dp"   
                android:layout_height="wrap_content" />    

     <SeekBar  
     android:id="@+id/seekBar1"  
     android:layout_width="match_parent"  
     android:layout_height="wrap_content"    
     android:max="4990000"    
     android:progress="10"  />  

这是java代码

    seekbar1 = (SeekBar) findViewById(R.id.seekBar1);
    seekbar1.setProgress(30);
    seekbar1.setOnSeekBarChangeListener( new OnSeekBarChangeListener()
    {
        public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser)
        {
            spinnervalue=(EditText)findViewById(R.id.editText1);

                spinnervalue.setText(""+Integer.toString(progress));

            //  Notify that the progress level has changed.  

            if(txtAmount.getText().length() > 0
                    && txtYears.getText().length() > 0
                    && txtRate.getText().length() > 0)
            {
                calculate();
            }

        }

    });

所以通过根据输入的值更改edittext中的值,必须将搜索栏移动到特定值。

3 个答案:

答案 0 :(得分:4)

尝试 setProgress(Value)的{​​{1}}。 它应该在您的Seekbar支持的值范围内。

答案 1 :(得分:1)

我认为你有两个解决方案:

  1. 在表单上创建一个按钮,并在xml中使用android:onClick。在其内部活动中,您可以使用seekbar1.setProgress(progress);设置Seekbar的进度。
  2. 添加计时器并定期查看值是否已更改:

    定时器计时器=新的计时器();

        timer.schedule(new TimerTask() {
          @Override
          public void run() {
              runOnUiThread(new Runnable() {
                  @Override
                  public void run() {
                      seekbar1.setProgress(progress);
                  }
              }
          }
        }, 1000, 1000);
    
  3. 希望这有帮助。

答案 2 :(得分:0)

我尽可能多地了解你的情况。你有1 EditText&amp; 1 SeekBar&amp;在EditText中更改文本时,您要设置SeekBar当前选定的位置。

为实现此目的,您需要在onTextChangedListener上使用EditText并在其中执行以下操作。

首先定义 spinnervalue=(EditText)findViewById(R.id.editText1); spinnervalue.setOnTextChangeListener(this)

中的onCreate()

现在在onTextChanged

中使用以下代码
String value = spinnervalue.getText().toString();
try{
    int progress = Integer.parseInt(value);
    if (progress >= 0 && progress <= 100)
        {
          Log.e("", "Value set:" + progress);
          seekbar1.setProgress(progress);
        }
    }
    catch(Exception e)
    {
        Log.e("", "Value set:" + value);
        e.printStackTrace();
    }    
}

还要将以下代码添加到布局

中的 seekbar-tag
android:max="100"

希望我能理解。

感谢。