Десятичная маска Android на EditText, заполненная справа налево - PullRequest
1 голос
/ 16 мая 2019

Как я могу создать маску на EditText, которая заполнена справа?

Например, начальное значение 0,0. Затем, если нажата 1, она становится 0,1, а затем, если я нажимаю 2, она становится 1,2, до 12,3, если пользователь нажимает 3 далее.

Пробовал с библиотеками вот так , но он не позволяет заполнение справа налево.

Ответы [ 3 ]

0 голосов
/ 16 мая 2019

Вы можете сделать это без библиотеки, просто отформатируйте вывод в beforeTextChanged()

EditText editText = (EditText) findViewById(R.id.editText);
    editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    // TODO Auto-generated method stub
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
     // TODO Auto-generated method stub
    }
});
0 голосов
/ 21 мая 2019

Вот код, который я использовал, на случай, если он кому-то поможет

class DecimalFormatter(private val txt: EditText): TextWatcher {
        var ignoreChanges = false

        override fun afterTextChanged(s: Editable?) {
            if (!ignoreChanges) {
                ignoreChanges = true
                var content = txt.text.toString().replace(".", ",")
                var newContent = ""
                var commaFound = false
                for (c: Char in content) {
                    if ((c == ',' && !commaFound) || c != ',') {
                        newContent += c
                        if (c == ',') {
                            commaFound = true
                        }
                    }
                }
                txt.setText(newContent)
                if (newContent == "") {
                    newContent = "0,0"
                }

                txt.setSelection(txt.text.length)
                ignoreChanges = false
            }
        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {

        }

        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
        }

    }
0 голосов
/ 16 мая 2019

Я думаю, вы могли бы найти эту библиотеку полезной.Я проверил библиотеку и похоже, что это соответствует вашим ожиданиям.

Чтобы включить библиотеку, добавьте в ваш файл build.gradle следующее:

implementation 'com.github.faranjit:currency-edittext:1.0.1'

Теперь используйте его следующим образом.

<faranjit.currency.edittext.CurrencyEditText
    android:id="@+id/edt_currency"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"
    android:textColor="@android:color/black" />

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...