滑块选择 -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));
}
});
}
}
我想创建一个滑块,让用户能够在 -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));
}
});
}
}