1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/archermind-ti-currencyedittext

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

CurrencyEditText

Введение в проект

Модуль, предназначенный для инкапсуляции использования Textfield для сбора информации о валюте от пользователя. Поддерживает все локали/валюты, совместимые с ISO-3166.

Функции

  • Преобразование информации о валюте.

Демо

Состояние по умолчанию

Интеграция

Добавьте ссылку на mavenCentral() в build.gradle проекта:

repositories {   
    ...   
    mavenCentral()   
     ...           
 }

Добавьте зависимости в build.gradle записи:

dependencies { 
... 
implementation 'com.gitee.archermind-ti:CurrencyEditText:1.0.1' 
... 
}

Инструкция по использованию

Использование модуля не сильно отличается от использования любого другого представления EditText. Просто определите представление в макете XML:

<com.blackcat.currencyedittext.CurrencyEditText
                ohos:id="$+id:cet"
                ohos:top_margin="10vp"
                ohos:height="match_content"
                ohos:text_size="16fp"
                ohos:width="match_parent"
                />

Готово! Модуль CurrencyEditText обрабатывает все манипуляции со строками и мониторинг ввода, необходимые для создания чистой и простой в использовании системы ввода валюты.

В действии

По умолчанию представление CurrencyEditText выглядит как поле EditText с подсказкой, установленной на символ местной валюты пользователя.

Введённый текст

Когда пользователь вводит дополнительные значения, они появляются, начиная с самой правой цифры, сдвигая старые записи цифр влево по мере ввода.

В зависимости от настроек языка и локали пользователя отображаемый текст будет автоматически форматироваться в соответствии со стандартом пользователя. Например, когда пользователь выбирает «Немецкий», справа появляется символ евро, как показано ниже.

Подсказки

По умолчанию CurrencyEditText предоставляет значение «подсказка» для текстового поля. Это значение по умолчанию является символом кода валюты для заданной настройки локали пользователя. Это полезно для целей отладки, а также обеспечивает чёткое и понятное руководство для пользователя.

Если вы предпочитаете установить собственный текст подсказки, просто установите подсказку так же, как и для любого другого поля EditText. Вы можете сделать это либо в макете XML, либо в коде. Чтобы полностью удалить подсказку, установите подсказку в пустую строку («»).

Атрибуты

По умолчанию CurrencyEditText не позволяет вводить отрицательные числа. Это связано с тем, что наиболее распространённым вариантом использования ввода валюты является информация о транзакциях, где абсолютное значение транзакции вводится отдельно от объявления депозита или снятия средств.

Однако, если вам действительно нужно поддерживать ввод отрицательных чисел, вы можете включить его, установив атрибут allow_negative_values.

В xml:

<com.blackcat.currencyedittext.CurrencyEditText
        ohos:layout_width="match_parent"
        ohos:layout_height="match_content"
        app:allow_negative_values="true"
    />

В java:

CurrencyEditText tb = (CurrencyEditText) findComponentById(ResourceTable.Id_test);
tb.setAllowNegativeValues(true);

Вы также можете установить позицию десятичных цифр (см. ниже) через xml или java

В xml:

<com.blackcat.currencyeditext.CurrencyEditText
        ohos:layout_width="match_parent"
        ohos:layout_height="match_content"
        app:decimal_digits="0"
    />

В java:

CurrencyEditText tb = (CurrencyEditText) findComponentById(ResourceTable.Id_test);
tb.setDecimalDigits(0);

Получение и обработка ввода

Поскольку CurrencyEditText является расширением класса EditText, он содержит все те же геттеры и сеттеры, которые предоставляет EditText.

Чтобы получить полностью отформатированное строковое значение, отображаемое пользователю, просто вызовите метод getText() вашего объекта CurrencyEditText. Метод getRawValue() возвращает необработанные числовые значения, которые были введены пользователем, и их следует рассматривать как целое значение местной валюты пользователя.

Например, если текст поля равен $13,37, этот метод вернёт значение типа Long, равное 1337, поскольку пенни — это наименьшая денежная единица в долларах США.

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

Чтобы упростить работу с локальными значениями после извлечения, CurrencyEditText предоставляет метод getLocale(), который возвращает локаль, используемую данным экземпляром для форматирования.

Локали

CurrencyEditText использует объект Locale для правильного форматирования заданного значения. Есть две переменные Locale, доступные через геттеры и сеттеры объекта CurrencyEditText: locale и defaultLocale.

  • locale — локаль по умолчанию, основанная на настройках OpenHarmony. Это значение можно изменить в настройках OpenHarmony, а также через API CurrencyEditText. Обратите внимание, что это значение, полученное с устройства конечного пользователя, не всегда совместимо со стандартом ISO-3166. Оно используется как переменная «счастливого пути», но из-за потенциального несоответствия стандарту ISO-3166 CurrencyEditText будет использовать defaultLocale в случае ошибки.

  • defaultLocale — отдельное значение, которое используется в качестве запасного варианта, если предоставленное значение локали не работает. Это может произойти, если значение locale не соответствует стандарту ISO-3166. Список поддерживаемых значений можно найти в Java.util.Locale.getISOCountries(). Обратите внимание, что список поддерживаемых значений жёстко запрограммирован в каждой версии Java, поэтому со временем список поддерживаемых ISO может измениться.

Значение по умолчанию для defaultLocale — Locale.US. И это значение, и значение locale можно перезаписать с помощью сеттеров, доступных в объекте CurrencyEditText. Будьте осторожны и убедитесь, что если вы переопределяете значение defaultLocale, вы используете только значения, поддерживаемые ISO-3166, иначе форматер выдаст исключение IllegalArgumentException.

Форматирование значений

Если вы хотите получить отформатированную версию необработанного значения, ранее полученного от пользователя, используйте метод formatCurrency() класса CurrencyEditText. Он принимает один параметр: строку, представляющую значение, которое вы хотите отформатировать. Ожидается, что это значение будет в том же формате, что и возвращаемое значение метода getRawValue(). Например:

//rawVal содержит "1000"
CurrencyEditText cet = new CurrencyEditText();
... пользователь вводит "$10.00"
//rawVal равно 1000
Long rawVal = cet.getRawValue();
//formattedVal принимает "1000" и возвращает "$10.00"
String formattedVal = cet.formatCurrency(Long.toString(rawVal));
//или
String formattedVal = cet.formatCurrency(rawVal);

Десятичные цифры

По умолчанию текстовый форматтер CurrencyEditText использует объект locale для получения информации об ожидаемой валюте. Сюда входит расположение десятичного разделителя для младших номиналов (например, доллары против центов). Если вы хотите изменить положение десятичной точки, вы можете использовать метод setDecimalDigits(). Это очень полезно в некоторых случаях, например, если вы хотите показывать только суммы в долларах.

CurrencyEditText cet = new CurrencyEditText();
... пользователь вводит 1000
//currentText равно "$10.00"
String currentText = cet.getText();
cet.setDecimalDigits(0);
//newText равно "$1,000"
String newText = cet.getText();

DecimalDigits также можно установить в XML-макете, если вам не нужна ссылка на представление Java.

Обратите внимание, что допустимый диапазон DecimalDigits составляет от 0 до 340. Любое значение вне этого диапазона вызовет исключение IllegalArgumentException. Функциональность.

Рекомендуется загрузить и запустить приложение, чтобы понять, как работает CurrencyEditText.

Почему CurrencyEditText не делает ?

CurrencyEditText разработан как небольшой и лёгкий модуль, который должен упростить работу разработчикам. Если вам не хватает какой-либо функциональности, отправьте новый Issue и отметьте его как Enhancement, и я посмотрю. Я не гарантирую, что соглашусь реализовать это.

Используйте на свой страх и риск!

Как указано в лицензии Apache (под которую подпадает этот проект), используя это программное обеспечение, вы соглашаетесь использовать его AS-IS. Я не утверждаю, что этот код на 100% свободен от ошибок или других проблем. Хотя я сделал всё возможное, чтобы избежать ошибок округления и протестировать все потоки кода, я не могу гарантировать или предоставить какую-либо гарантию того, что этот код будет работать у вас. Вы сами должны проанализировать это программное обеспечение и определить, соответствуют ли его набор функций и качество вашим потребностям.

Итерация версий

changelog

  • v1.0.0
  • v1.0.1 Исправлен сбой при выборе языка

Инструкции по компиляции

  1. Клонируйте проект локально с помощью Git.
  2. Используйте DevEco Studio для открытия проекта, а затем дождитесь завершения сборки Gradle.
  3. Нажмите «Запустить», чтобы запустить (на реальном компьютере может потребоваться настроить подпись).

Информация об авторских правах и лицензировании

Copyright 2017 BlacKCaT27

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Расширить Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/archermind-ti-currencyedittext.git
git@gitlife.ru:oschina-mirror/archermind-ti-currencyedittext.git
oschina-mirror
archermind-ti-currencyedittext
archermind-ti-currencyedittext
master