Android:在SeekBar中设置间隔

Seb*_*Seb 17 android

在我的应用程序中,我有一个Seekbar显示在对话框中.现在我想设置间隔和步骤Seekbar.间隔应为0-250,每步应为5分钟.

到目前为止这是我的代码:

public class seekActivity extends Activity implements OnClickListener, OnSeekBarChangeListener {
    SeekBar seekbar;
    Button button;
    TextView textview;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //set up main content view
        setContentView(R.layout.main);
        //this button will show the dialog
        Button button1main = (Button) findViewById(R.id.Button01main);
        button1main.setOnClickListener(this);
    }
    public void onClick(View v) {
        //set up dialog
        Dialog dialog = new Dialog(this);
        dialog.setContentView(R.layout.maindialog);
        dialog.setTitle("This is my custom dialog box");
        dialog.setCancelable(true);
        button = (Button) dialog.findViewById(R.id.Button01);
        seekbar = (SeekBar) dialog.findViewById(R.id.seekBar1);
        seekbar.setOnSeekBarChangeListener(this);
        textview = (TextView) dialog.findViewById(R.id.textView1);
        dialog.show();
    }
    public class SeekBarPreference {
    }
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress,
    boolean fromUser) {
        // TODO Auto-generated method stub
        textview.setText(progress + "");
    }
    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub
    }
    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub
    };
}
Run Code Online (Sandbox Code Playgroud)

谁能给我一些提示/代码怎么办?

谢谢!

gyp*_*der 43

您必须更新onProgressChanged方法,如下所示.


int stepSize = 5;
public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {
    progress = ((int)Math.round(progress/stepSize))*stepSize;
    seekBar.setProgress(progress);
    textview.setText(progress + "");

}
Run Code Online (Sandbox Code Playgroud)

  • 堆叠流量...搜索栏中的任何更改都会再次影响它 (6认同)
  • 由于`progress`和`stepSize`已经是`int`类型,因此不需要`Math.round`:`(progress/stepSize)*stepSize`就足够了. (3认同)

cyn*_*gus 24

为什么不将SeekBar的最大值设置为50(250/5),然后从SeekBar值到"真实"值进行必要的转换,而不是这样做?