Как программно изменить цвет границы Android Toggle / LabeledSwitch? - PullRequest
0 голосов
/ 02 марта 2020

Я использую Android Toggle library от Angad Singh для программного создания LabeledSwitch, все работает, но я не могу закрасить границу.

LabeledSwitch switch = new LabeledSwitch(context);
switch.setLayoutParams(lp);
switch.setColorDisabled(context.getResources().getColor(R.color.colorDisabled));
switch.setColorOn(context.getResources().getColor(R.color.colorPrimary));
switch.setLabelOn("Yep!");
switch.setLabelOff("Nope!");

xml свойство равно app:colorBorder, если я напишу это свойство, я получу это сообщение:

enter image description here

'colorBorder' имеет частный доступ в 'com.github.angads25.toogle.LabeledSwitch'

Как программно изменить цвет границы LabeledSwitch? (не xml)

1 Ответ

1 голос
/ 02 марта 2020
  val view = v.findViewById<LinearLayout>(R.id.container)

    val lp = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)
    val switch1 = LabeledSwitch(activity)
    switch1.layoutParams = lp
    switch1.colorDisabled = ContextCompat.getColor(activity!!, R.color.colorAccent)
    switch1.colorOn = ContextCompat.getColor(activity!!, R.color.colorPrimary)
    switch1.labelOn = "Yep!"
    switch1.labelOff = "Nope!"
    switch1.colorBorder = ContextCompat.getColor(activity!!, android.R.color.black)
    view.addView(switch1)

Сначала вам нужно использовать ContextCompat, чтобы получить свой цветовой ресурс, а не использовать resources.getColor ()

Опять же, мне кажется, это работает для более поздней версии 1.1.0, может быть, вам нужно обновить вашу зависимость.

Редактировать

Если вы используете kotlin, вам нужно использовать назначенный символ = вместо использования скобок. если вы используете java, вам нужно использовать setColorBorder.

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