gpt4 book ai didi

android - 以编程方式更改 TextInputLayout 轮廓框颜色

转载 作者:行者123 更新时间:2023-12-04 16:28:44 25 4
gpt4 key购买 nike

我想以编程方式更改 TextInputLayout 的轮廓,但我似乎无法让它工作。有一个选项可以通过 XML (question by other SO user using XML) 来实现,但这对我来说是不可用的,因为我需要动态着色。我目前有以下布局:

<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:id="@+id/color_outline"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<com.google.android.material.textfield.TextInputEditText
android:id="@+id/color"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Choose color"/>

</com.google.android.material.textfield.TextInputLayout>

我尝试通过查看 TextInputLayout 的各种框方法来应用着色,但没有任何效果。

internal fun String.toIntColor() = Integer.parseInt(this.replaceFirst("#", ""), 16)


val colorOutline: TextInputLayout = view.findViewById(R.id.color_outline)
colorOutline.boxStrokeColor = "#006699".toIntColor()

如何动态着色,如下图所示?

现状:
enter image description here

期望的情况:(照片)
enter image description here

Similar question, but focussing on XML

最佳答案

你可以使用方法setBoxStrokeColorStateList

类似:

//Color from rgb
int color = Color.rgb(255,0,0);
//Color from hex string
int color2 = Color.parseColor("#FF11AA");

int[][] states = new int[][] {
new int[] { android.R.attr.state_focused}, // focused
new int[] { android.R.attr.state_hovered}, // hovered
new int[] { android.R.attr.state_enabled}, // enabled
new int[] { } //
};

int[] colors = new int[] {
color,
color,
color,
color2
};

ColorStateList myColorList = new ColorStateList(states, colors);
textInputLayout.setBoxStrokeColorStateList(myColorList);

enter image description here

关于android - 以编程方式更改 TextInputLayout 轮廓框颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57028030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com