android 如何返回到编辑文本的原始背景色

lskq00tm  于 2023-02-17  发布在  Android
关注(0)|答案(1)|浏览(111)

你好,我有一个编辑文本,我想改变背景色调为原来的颜色。
这样我就变成了红色,但又想回到原来的颜色,请问我该怎么做

etCostLimit.backgroundTintList = ColorStateList.valueOf(resources.getColor(
                                            R.color.newRed,
                                            null))

先谢谢你

h7appiyu

h7appiyu1#

在尝试了所有方法之后,我终于在一个C#论坛上找到了答案。将其转换为Kotlin并结合其他部分,以下是结果(在API 21和33上验证):
考虑将editText作为变量名。
备份:

val defaultTintList =
    if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP && editText is AppCompatEditText) {
        null //reading current value also returns null
    } else {
        //restoring editText.backgroundTintList (which is null) doesn't work correctly
        val typedValue = TypedValue()
        context.theme.resolveAttribute(R.attr.colorAccent, typedValue, true)
        ColorStateList.valueOf(ContextCompat.getColor(context, typedValue.resourceId))
    }

恢复:

@SuppressLint("RestrictedApi")
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP && editText is AppCompatEditText)
    (editText as AppCompatEditText).supportBackgroundTintList = defaultTintList
else
    editText.backgroundTintList = defaultTintList

相关问题