android - Android 中搜索栏的十进制值

标签 android decimal seekbar android-seekbar

我正在开发 Android 应用程序,其中使用搜索栏。我的范围是 0 - 20,起始值为 5。对于数值,它工作正常,但现在我想将其设置为十进制值,但范围应该是从 0.0 到 20.0。我的数字代码如下:

SeekBar seek=(SeekBar) findViewById(R.id.seekBar1);
        seek.setProgress(5);
        seek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
                        // TODO Auto-generated method stub
        }
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {
        textView.setText( progress + " km");// + seekBar.getMax());
        distance = progress;
        }
        });

搜索栏的 XML:

<TextView
            android:id="@+id/txtSeekBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginBottom="10dp"
            android:text="5 km"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@color/gray" />

我已将此示例代码用于十进制值,但它不起作用。

SeekBar seek=(SeekBar) findViewById(R.id.seekBar1);
        seek.setProgress(5);


        seek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
                        // TODO Auto-generated method stub
        }
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {

        double value = ((float)progress / 20.0);
        String yourprogress = String.valueOf(value);
        textView.setText( yourprogress + " km");// + seekBar.getMax());
        distance = (int) value;
        }
        });

最佳答案

您应该将进度范围设置为 0 到 200,然后在当前进度发生变化时将其乘以 0.1f。干杯。

SeekBar seek=(SeekBar) findViewById(R.id.seekBar1);
        seek.setProgress(5 * 10);


        seek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
                        // TODO Auto-generated method stub
        }
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {

        float currentProgress = progress * 0.1f;
        String yourprogress = String.format("%.1f", currentProgress);
        textView.setText( yourprogress + " km");// + seekBar.getMax());
        }
        });

在 XML 布局中将其添加到进度条

android:max="200"

当你想要getProgress时也乘以0.1f

float currentProgress = seekBar.getProgress() * 0.1f;

关于android - Android 中搜索栏的十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29935906/

相关文章:

Android IN App 购买 - 项目已拥有问题

android - 在不丢失 SeekBar 焦点的情况下更新 ListView 行

android - 搜索栏拇指中心不在起点

c# - 比较两位小数

python - 当我有小数和大数时,我应该如何处理小数精度?

android - 自定义范围搜索栏

android - 基于String.xml在textview中设置Android超链接

android - 第一次如何设置值

java - 使用默认配置配置 gradle 任务问题

php - 在php中将指数数转换为小数