如何以编程方式更改 Android Toggle/LabeledSwitch 边框颜色?

How to change Android Toggle/LabeledSwitch border color programmatically?

我正在使用 Angad Singh 的 Android Toggle library 以编程方式创建 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,如果我这样写 属性 我会收到这样的消息:

'colorBorder' has private access in 'com.github.angads25.toogle.LabeledSwitch'

如何以编程方式更改 LabeledSwitch 边框颜色? (不是 xml)

  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