Проблема здесь:
val chip = Chip(context, null, R.style.Widget_MaterialComponents_Chip_Choice)
Таким образом, вы не используете стиль Widget.MaterialComponents.Chip.Choice
, так как вы не может использовать конструктор val chip = Chip(context, null, R.style.xxxx)
для назначения стиля, поскольку 3-й параметр не стиль, а атрибут в теме как R.attr.chipStyle
.
Для более детали для изменения стиля чипа программно проверьте также этот ответ .
В своем коде вы используете стиль по умолчанию для Chip
Widget.MaterialComponents.Chip.Action
, который обеспечивает:
<item name="android:checkable">false</item>
Это объясняет, почему ваш Chip
не подлежит проверке.
Метод chip.setTextColor
является правильным и работает с селектором (но используйте селектор, как описано Ben.P в другом ответе ).
Как вы указали, если вы используете его в макете. xml он работает, поскольку в этом случае стиль, объявленный в макете, является правильным (Widget.MaterialComponents.Chip.Choice
).