滑块选择 -24 和 24 之间的数字,步长为 0.5

Slider to choose numbers between -24 and 24 with 0.5 step

我想创建一个滑块,让用户能够在 -24 到 24 的范围内选择数字,步长为 0.5。 因此,我决定创建一个滑块,它的拇指位于中心,可以向左右两侧滑动。这是我的目标图片: thumb is located at the center and user can move it to both sides

当用户向左移动滑块时,它会设置负数。同样,当用户将其向右移动时,它会设置正数。

我怎样才能做到这一点? 有没有其他更好的方法来赋予用户这种能力?

第二个问题我觉得是口味问题。

至于实现滑块,您可以使用SeekBar。由于您的步长为 0.5,范围为 48,这将为您提供 96 个离散点。在 SeekBar 中将最大值设置为 96。相应地实施 onProcessChanged 就可以了。参考示例代码:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="-24"
    android:id="@+id/textView2"
    android:layout_gravity="center_vertical" />

<SeekBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/seekBar"
    android:layout_gravity="center_vertical"
    android:layout_weight="1"
    android:max="96"
    android:indeterminate="false" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="24"
    android:id="@+id/textView3"
    android:layout_gravity="center_vertical" />

这是搜索栏更改侦听器:

public class MainActivity extends AppCompatActivity {

    private TextView mTextView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SeekBar bar = (SeekBar)this.findViewById(R.id.seekBar);
        mTextView = ((TextView)MainActivity.this.findViewById(R.id.textView));
        bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                float value = -24 + (progress / 2.0f);
                MainActivity.this.mTextView.setText(String.format("%.1f", value));
            }
        });
    }
}