Я использую (несколько) TextSwitchers в моем приложении, большинство из которых выглядит что-то. как это:
<TextSwitcher
android:id="@+id/countdownTextSwitcher"
android:inAnimation="@anim/countdown_enter" />
Каждый требует Фабрика, ул. вот так (Kotlin):
countdownTextSwitcher.setFactory {
val textView = TextView(context)
textView.textSize = 15f
textView.someOtherProperty = someValue
textView
}
Где-то в моем коде я задам текст. (Ради этого примера давайте не будем обращать внимания на то, что строковые ресурсы / множественное число являются хорошей идеей.)
countdownTextSwitcher.setText("42 Seconds")
Я предполагаю, что в Java Фабрика еще больше раздуваемого кода.
Есть ли (несколько элегантный) способ избавиться от фабрики и указать textSize
и someOtherProperty
в xml? Таким образом, единственный способ, которым мой код должен взаимодействовать с макетом, - это вызов setText()
. Кажется, я не могу его найти.
Если нет никакого пути, то какова техническая причина этого? Я не знаком с пользовательскими представлениями, но установка фабрики по умолчанию и передача атрибутов xml, похоже, не сводит с ума.
Если для этого нет реальной технической причины, то какова настоящая причина для этого? как это реализовано? Я полностью пропускаю вариант использования по умолчанию?