带有Seekbar Android的Editext.setSelection

问题描述 投票:0回答:1

嗨,我遇到Editext和Seekbar的问题。

问题拖动Seekbar时,它会将进度发送到Editext,这是常见现象,但是当我尝试清除按下清除按钮的Editext时,它只会清除1位数字,怎么能像普通editext一样清除所有数字?很多指导表示感谢:)

mSbTest = findViewById(R.id.sb_testing);
mEtTextSize = findViewById(R.id.et_text_size);

    mSbTest.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(final SeekBar seekBar, int progress, boolean fromUser) {
            mEtTextSize.setText(String.valueOf(seekBar.getProgress()));
            mEtTextSize.setSelection(mEtTextSize.getText().length());
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
    });

    mEtTextSize.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            if (!s.toString().isEmpty()) {
                setEditTextMaxLength(mEtTextSize, 9);
                mCustomBarChart.TextSize(Integer.valueOf(s.toString()));
                mCustomBarChart.invalidate();
                mEtTextSize.removeTextChangedListener(this);
                mSbTest.setProgress(selectedValue);
                selectedValue = Integer.valueOf(s.toString());
                mEtTextSize.addTextChangedListener(this);
            }
        }
    });
android android-seekbar
1个回答
0
投票

请使用这个,它工作正常

    sikbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
            editText.setText(String.valueOf(i));
            editText.setSelection(String.valueOf(i).length());

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });

在onTextChange中使用此

  @Override
                public void afterTextChanged(Editable editable) {
                    int progress = Math.round(Float.parseFloat(editable.toString()));
                    sikbar.setProgress(progress);
}

在onTextChange中,请检查输入的大小,否则会引发异常。

© www.soinside.com 2019 - 2024. All rights reserved.