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

时间:2016-04-19 10:23:40

标签: android android-layout slider

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

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

我怎样才能做到这一点? 还有另一种更好的方式来为用户提供这样的能力吗?

1 个答案:

答案 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));
            }
        });
    }
}