如何在Android中创建步长为0.5的SeekBar?

3
我需要一个值从1到6,步长为0.5的进度条。因此,数值必须为:1-1.5-2-2.5...请问正确的算法是什么?

请查看以下链接:https://dev59.com/8Ws05IYBdhLWcg3wSP9H#7329277 - NullPointerException
请查看此链接:https://dev59.com/jnDXa4cB1Zd3GeqP9Std - Lokesh
3个回答

2

我会将可能的值存储在一个数组中,并使用当前的拖动条值作为元素索引来访问“期望”的值。

就像这样

int[] values = {0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4};
int current = values[ seekbar.getValue() ];

在我看来,对于少量的值,这是一种可接受的方法。当然,如果你有很多值,就不能使用这种方法! - Alessandro
@Alessandro 使用 range - user25

2
在布局中定义SeekBar,可以像这样:

将SeekBar定义在布局中,如下所示:

        <SeekBar
        android:id="@+id/seekbar1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:progress="0"
        android:max="5"/>

在您的活动中添加以下内容:
public class MainActivity extends Activity {

 private SeekBar seekBar;
 private TextView textView;

 @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  seekBar = (SeekBar) findViewById(R.id.seekBar1);

  for(i=0;i<seekBar.getMax();i=i+0.5){
        Thread.sleep(500);
        seekBar.setProgress(i);
   }

 }

0
你可以这样做:
<SeekBar
    android:id="@+id/seek"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:max="12" />

然后使用以下代码访问进度条:

mSeekBar = (SeekBar) findViewById(R.id.seek);

    mSeekBar.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) {
            Toast.makeText(MainActivity.this, "" + (float) progress / 2, Toast.LENGTH_SHORT).show();
        }
    });

这将在每次更改时为您提供一个提示。您只需将每个进度除以2。

编辑1: 或者您可以使用以下代码获取实际值:

float value = (float) mSeekBar.getProgress() / 2;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接