Вставка только чисел из буфера обмена - PullRequest
0 голосов
/ 13 ноября 2018

InputType из EditText в моем приложении number, только.Как я могу вставить только цифры из буфера обмена в EditText, если текст в буфере обмена содержит как цифры, так и буквы?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Решение: Появились две вещи.

Во-первых : Как я уже проверял ваш вопрос, если вы задали EditText как android:inputType="number" тогда ведет себя именно так, как вы хотите.Если вы вставите буквенно-цифровую строку, то она показывает только номер.Это не показывает алфавитов или каких-либо специальных символов вообще.Это было проверено на моем устройстве Android 7.1.1 (API25).

Во-вторых : Если вы все еще хотите использовать обходной путь, который соответствует вашим потребностям, вы можете использовать TextWatcher:

  • Шаг 1: Создайте глобальный объект EditText, в который вы вставите String, и инициализируйте его:

    EditText editText;
    

    , затем в onCreate():

    editText = findViewById(R.id.your_editText);
    
  • Step2: Добавьте TextWatcher

    editText.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) {
            ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
            try {
                CharSequence txt = clipboard.getPrimaryClip().getItemAt(0).getText();
                String str = getOnlyNumbers(txt.toString());
                editText.setText(str);
            } catch (Exception e) {
                return;
            }
        }
    });
    
  • Step3: Добавьте приведенный ниже метод в своем классе, чтобы спасти только числа:

    public String getOnlyNumbers(String str) {
    
        str = str.replaceAll("[^\\d.]", "");
    
        return str;
    
    }
    

Надеюсь, это поможет.Если у вас есть какие-либо сомнения, пожалуйста, прокомментируйте ниже.

0 голосов
/ 13 ноября 2018

Да, возможно

        final ClipboardManager myClipboard;
        final ClipData[] myClip = new ClipData[1];
        final int[] voterid;
        voterid= new int[]{1, 2, 3, 4};

с использованием базового адаптера

        farea.setText(voterid);

        farea.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                myClip[0] = ClipData.newPlainText("text", voterid);
                myClipboard.setPrimaryClip(myClip[0]);

                Toast.makeText(getApplicationContext(), "Text Copied",
                        Toast.LENGTH_SHORT).show();
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...