Nano Hash - криптовалюты, майнинг, программирование

Android SetColorFilter() против SetBackgroundResource()/SetColorBackground()

Кто-нибудь может объяснить эту разницу во внешнем виде?
SetColorFilter() действует на фон Drawable, независимо от того, устанавливает ли setBackgroundResource() цвет фона.
В версии Android 2.3 я безопасно использовал SetColorFilter() для изменения цвета фона EditText, так как очень легко восстановить первоначальный цвет, очистив фильтр. Не нужно брать и запоминать. Теперь, кажется, есть разница между двумя способами.

Это диалоговое окно EditTextPreference, это идентификатор EditText.

        public void afterTextChanged(Editable s) {
            String source = s.toString();
            et.removeTextChangedListener(this);
            if( !source.matches("^[0-9]+$") ) {
                et.getBackground().setColorFilter(getResources().getColor(R.color.invalid), Mode.OVERLAY);
                et.invalidate();
                et.selectAll();
            } else {
                et.getBackground().clearColorFilter();
                et.invalidate();
            }
            et.addTextChangedListener(this);
        }

введите здесь описание изображения

И это тот же код, использующий SetBackgroundResource()

        public void afterTextChanged(Editable s) {
            String source = s.toString();
            et.removeTextChangedListener(this);
            if( !source.matches("^[0-9]+$") ) {
                et.setBackgroundResource(R.color.invalid);
                et.selectAll();
            } else {
                et.setBackgroundResource(R.color.valid);
            }
            et.addTextChangedListener(this);
        }

введите здесь описание изображения


  • Вы знаете, что можете просто вызвать et.setError("Error message");, и он пометит текст редактирования значком ошибки. Просто как еще один вариант. 22.02.2013
  • @dymmeh Не могли бы вы поместить свой комментарий в качестве ответа? Попробовал, у меня есть снимок, могу выложить ради любого другого пользователя. Как вы сказали, есть значок. Я бы тоже очень хотел красный фон. 22.02.2013

Ответы:


1

Вы можете использовать textView.setError("Error message"), как указано выше. Однако, если вы хотите настроить поведение setError() (например, изменить цвет фона), вам, к сожалению, потребуется переопределить EditText и написать собственный обработчик для setError, как показано здесь: EditText setError() со значком, но без всплывающего сообщения

02.04.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..