我有一個seekbar,同時移動它我想要將值從0更改爲200.我有一個TextView,在移動seekbar時顯示這些值。但是我不想讓這個區間(0,1,2,3,4,5 ...)的每個值都有,但是要有10,20,30 ......等等。所以,當我移動seekbar,我想顯示10,20,30,40 ....到200.有人可以給我一個提示或例子如何做到這一點?在seekbar中更改步驟值?
回答
試試下面的代碼
SeekBar seekBar = (SeekBar)layout.findViewById(R.id.seekbar);
seekBar.setProgress(0);
seekBar.incrementProgressBy(10);
seekBar.setMax(200);
TextView seekBarValue = (TextView)layout.findViewById(R.id.seekbarvalue);
seekBarValue.setText(tvRadius.getText().toString().trim());
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progress = progress/10;
progress = progress * 10;
seekBarValue.setText(String.valueOf(progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
setProgress(int)
用於設置搜索欄
setMax(int)
的起始值使用。如果你想設置搜索欄
的最大值設置搜索欄的邊界,然後您可以在onProgressChanged
方法中檢查進度條值。如果進度小於或大於邊界,則可以將進度設置爲您定義的邊界。
您應該使用SeekBar.OnSeekBarChangeListener
跟蹤進度變化。致電mseek.setMax(200)
。對當前值進行模運算以決定是否更新文本視圖。
SeekBar.OnSeekBarChangeListener() {
void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (progress % 10 == 0) {
textview.setText(""+progress);
}
}
}
的easieset辦法,我能想到的,是簡單地定義:
SeekBar yourSeekBar = (SeekBar)findViewById(R.id.yourSeekBarId);
yourSeekbar.setMax(20);
接下來,覆蓋這些方法(還需要空的方法,即使它們是空的):
yourSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
if (progress >= 0 && progress <= sizeSeekBar.getMax()) {
String progressString = String.valueOf(progress * 10);
yourTextView.setText(progressString); // the TextView Reference
seekBar.setSecondaryProgress(progress);
}
}
}
});
這個想法是隻爲seekbar定義20個值,但總是將該值乘以10並顯示該值。 如果您確實不需要200個值,那麼使用200個值沒有意義。
+爲簡單起見。我搜索了其他問題,最終在這裏,但認爲你值得+1 –
這似乎是更好的解決方案。我喜歡它如何跳到下一個數字。數字是靜態的進展看起來很奇怪。 –
的最低發行,你可以設置你的進度偏移。這樣,用戶就無法達到最低價值。
int offset = 10;
seekBar seekBar = (SeekBar)layout.findViewById(R.id.seekbar);
seekBar.setProgress(0);
seekBar.setMax(190); //with the offset, you need to adapt the max value
TextView seekBarValue = (TextView)layout.findViewById(R.id.seekbarvalue);
seekBarValue.setText(""+(seekBar.getProgress() + offset));
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progress += offset;
seekBarValue.setText(String.valueOf(progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
您還可以通過定義自定義搜索欄類,如下
public class CustomSeekBar extends AppCompatSeekBar {
int SEEKBAR_MULTIPLIER = 1;
public CustomSeekBar(Context context) {
super(context);
}
public CustomSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomSeekBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void setSeekBarConfig(int SEEKBAR_MULTIPLIER, int SEEKBAR_MAX){
setMax(SEEKBAR_MAX);
this.SEEKBAR_MULTIPLIER = SEEKBAR_MULTIPLIER;
}
@Override
public int getProgress() {
return super.getProgress() * SEEKBAR_MULTIPLIER;
}
}
實現這一目標,可以通過以下方式
CustomSeekBar mCustomSeekBar = (CustomSeekBar) findViewById(R.id.customSeekBar);
mSeekBar.setSeekBarConfig(10,20);
在XML中使用你應該增加而不是搜索欄
CustomSeekBar<*.CustomSeekBar
com.quemb.qmbform.view:setSeekBarConfig="10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/seekBar" />
因此,您可以在整個應用程序中重複使用自定義seekBar,而無需重複整個額外計算。
- 1. 插值步驟
- 2. 更改向導步驟按鈕文本
- 3. 工作表更改重複步驟
- 4. 如何更改滾動條的步驟?
- 5. FullPage.js和SlimScrolling.js更改滾動步驟
- 6. 觸發「entityimage」更改的插件步驟
- 7. 更改X的間隔步驟蟒
- 8. 更改Wit.ai默認最大步驟
- 9. TensorBoard更改圖片滑塊步驟
- 10. 更改sugarcrm主題的步驟
- 11. Android - Seekbar問題,無法更改值
- 12. 在循環中的任意步驟中更改Label.Text
- 13. 如何在Matlab中更改lsqcurvefit中的步驟?
- 14. 在循環中的任何步驟中更改label.text
- 15. 聚合值步驟
- 16. DependencyProperty - 如何設置值的步驟更改?
- 17. 更改Highcharts xAxis圖表重繪事件的步驟值?
- 18. 更改步驟<INPUT TYPE = 「範圍」>對某些值
- 19. 在更改Edittext後更新Seekbar
- 20. 在結算步驟中更改產品的數量magento
- 21. 訪問Teamcity git在構建步驟中更改日誌
- 22. 在Magento結帳中更改結帳步驟訂單
- 23. PrimeFaces嚮導:更新步驟更改中的其他組件
- 24. SeekBar偏好更改量
- 25. 更改Android-Seekbar的大小?
- 26. Android:更改SeekBar行爲
- 27. 更改Seekbar的長度xml
- 28. 當主動步驟更改時,在Material-ui步進器中保留StepContent數據
- 29. Seekbar改變int的值
- 30. 更改異步工作流程生成器以統計步驟?
哇,這只是一個很好的例子!無論如何,我可以將搜索欄的最小值設置爲10嗎?我可以設置最大值,通過說'seekBar.setMax(200)',沒有最小值。我有一些關於如何做到這一點的想法,但每次都會遇到錯誤( – lomza
使用seekBar.setProgress(10);設置最小值爲10在搜索欄 – Dharmendra
我解決了這個問題。 10,我仍然可以設置0,並且我想不能選擇這個選項(所以用戶不能選擇小於10的值)。我這樣做了,但在ChangeListener中加入了'if'語句。 – lomza