我想创建一个滑块,使用户能够选择-24到24范围内的数字,步长为0.5。 因此,我决定创建滑块,其拇指位于中心,可以滑动到左右两侧。这是我的目标: thumb is located at the center and user can move it to both sides
当用户将滑块的拇指向左移动时,它会设置负数。同样,当用户将其向右移动时,它会设置正数。
我怎样才能做到这一点? 还有另一种更好的方式来为用户提供这样的能力吗?
答案 0 :(得分:1)
第二个问题是我相信的品味问题。
至于实现滑块,您可以使用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));
}
});
}
}