我有两个搜索栏。我想设置第一个Seekbar进程值是指定第二个Seekbar的初始值。我的确切要求是,我希望用三个seekbar覆盖0到100.Ex:如果FirstSeekBar覆盖1到30,则第二个SeekBar会自动启动30到100.如果我在第二个搜索栏中设置过程值60,则第三个Seekbar会自动启动60到100。请帮我解决这个问题。
activity.xml
<SeekBar
android:id="@+id/firstSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"/>
<SeekBar
android:id="@+id/secondSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" />
<SeekBar
android:id="@+id/thirdSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" />
SeekBarActivity.java
firstSeekBar.setOnSeekBarChangeListener(
new SeekBar.OnSeekBarChangeListener() {
int firstPgrValue;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
firstPgrValue = progress;
secondSeekBar.setEnabled(true);
txtFirstSeek.setText("First (" + progress + " / " + firstSeekBar.getMax() + ")");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
shortMessage(MainActivity.this, "Progress Start");
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (firstPgrValue == 0) {
secondSeekBar.setEnabled(false);
redSeekBar.setEnabled(false);
}
txtFirstSeek.setText("First (" + firstPgrValue + " / " + firstSeekBar.getMax() + ")");
shortMessage(MainActivity.this, "Progress Stopped");
}
}
);
secondSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int secondPgrValue;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
secondPgrValue = progress;
thirdSeekBar.setEnabled(true);
txtSecondSeek.setText("Second (" + progress + " / " + secondSeekBar.getMax() + ")");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
shortMessage(MainActivity.this, "Progress Start");
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (secondPgrValue == 0) {
thirdSeekBar.setEnabled(false);
}
txtSecondSeek.setText("Second (" + secondPgrValue + " / " + secondSeekBar.getMax() + ")");
shortMessage(MainActivity.this, "Progress Stopped");
}
});
thirdSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int thirdPsrValue;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
thirdPsrValue = progress;
txtRedSeek.setText("Third (" + progress + " / " + redSeekBar.getMax() + ")");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
shortMessage(MainActivity.this, "Progress Start");
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
txtThirdSeek.setText("Third (" + thirdPsrValue + " / " + thirdSeekBar.getMax() + ")");
shortMessage(MainActivity.this, "Progress Stopped");
}
});
答案 0 :(得分:1)
不幸的是,vanilla SeekBar
没有默认的min
字段。我将此值与不整齐且不方便的int
字段并行存储。您可以扩展该类,或者像我一样扩展该类,但在我看来,您正在描述一种常见情况,其功能已由许多RangeBar
实现提供。
我的确切要求是,我希望用三个seekbar覆盖0到100.Ex: 如果FirstSeekBar覆盖1到30,则第二个SeekBar会自动启动 如果我在第二个搜索栏中将过程值60设置为第三个 Seekbar自动启动60到100。
https://github.com/yahoo/android-range-seek-bar只有两个拇指,应该是理想的。 Others提供无限大拇指。