web-dev-qa-db-ja.com

デフォルトとしてシークバーに値を表示する方法は?

たとえば、0〜10のシークバーがあります。シークバーをデフォルトの位置として5に設定する場合、どのようにすればよいですか。したがって、この例では、シークバーは中央から開始する必要があります。

28
Adam

これを使って

Android:progress="5"

「進行」と同様に、ProgressBarから属性の一部を継承します。すべての属性は http://developer.Android.com/reference/Android/widget/SeekBar.html にあります。

38
mseo

5の値でシークバーを取得するには

Xmlレイアウトでは、10として最大値を使用します

  Android:max="10"

Javaでシークバーが進行中になる5

 seekbar = (SeekBar) findViewById(R.id.seekBar1);
 seekbar.setProgress(5);

それでおしまい :)

21
Danny

このコードがきっとあなたのお役に立てば幸いです。
これを試して...

float discrete=0; 
 float start=0; 
 float end=100; 
 float start_pos=0; 
 int start_position=0; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    start=-10;      //you need to give starting value of SeekBar 
end=10;         //you need to give end value of SeekBar 
    start_pos=5;    //you need to give starting position value of SeekBar 

    start_position=(int) (((start_pos-start)/(end-start))*100); 
    discrete=start_pos; 
    SeekBar seek=(SeekBar) findViewById(R.id.seekBar1); 
    seek.setProgress(start_position); 
    seek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

        @Override 
        public void onStopTrackingTouch(SeekBar seekBar) { 
            // TODO Auto-generated method stub 
            Toast.makeText(getBaseContext(), "discrete = "+String.valueOf(discrete), Toast.LENGTH_SHORT).show(); 
        } 

        @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 
            // To convert it as discrete value 
            float temp=progress; 
            float dis=end-start; 
            discrete=(start+((temp/100)*dis)); 

        } 
    }); 
} 
4