一个 seekBar 的移动会影响其他 seekBar
movement of one seekBar will affect other seekBar
我的应用程序屏幕中有 5 个 seekBar 小部件和一个 "total budget" 用户可以初始化的 editText 小部件。
我想实现移动一个 seekBar 影响另一个 seekBar 向相反方向移动的效果,受 "total budget" 限制。
我怎样才能达到这种效果,是否可以让 seekBars 同时移动?
您可以为此使用 SeekBar.OnSeekBarChangeListener
。
对于每个搜索栏,您需要设置此侦听器并从类似于此的 onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
方法更新其他搜索栏的值:
seekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
// update other seekbars' value
seekBar2.setProgress();
seekBar3.setProgress();
seekBar4.setProgress();
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
// update other seekbars' value
seekBar1.setProgress();
seekBar3.setProgress();
seekBar4.setProgress();
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
我的应用程序屏幕中有 5 个 seekBar 小部件和一个 "total budget" 用户可以初始化的 editText 小部件。 我想实现移动一个 seekBar 影响另一个 seekBar 向相反方向移动的效果,受 "total budget" 限制。 我怎样才能达到这种效果,是否可以让 seekBars 同时移动?
您可以为此使用 SeekBar.OnSeekBarChangeListener
。
对于每个搜索栏,您需要设置此侦听器并从类似于此的 onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
方法更新其他搜索栏的值:
seekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
// update other seekbars' value
seekBar2.setProgress();
seekBar3.setProgress();
seekBar4.setProgress();
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
// update other seekbars' value
seekBar1.setProgress();
seekBar3.setProgress();
seekBar4.setProgress();
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});