本文示例代码API基于compose UI 1.0.0-bate08
背景深色时,使用OutlinedTextField会有不清晰的情况,需要自定义配置颜色,outlinedTextFieldColors颜色太多,记录一下方便以后修改。
OutlinedTextField(
colors: TextFieldColors = TextFieldDefaults.outlinedTextFieldColors(),
)
outlinedTextFieldColors默认Default颜色说明(加粗比较常用):
textColor: Color = 文字颜色,根据surface调整onSurface,默认黑色
disabledTextColor: Color = 禁用文本颜色,取textColor: 的0.38f透明度版本
backgroundColor: Color = 背景颜色,默认全透明度的白色,修改没什么效果
cursorColor: Color = 光标颜色,默认主题primary色
errorCursorColor: Color = 错误光标颜色,默认主题error色,主题error默认0xFFB00020
focusedBorderColor: Color = 点击聚焦后边框颜色,默认主题primary色的hight透明度色(0.87f-1.0f)
unfocusedBorderColor: Color = 未点击时边框颜色,默认onSurface的0.38f透明度
disabledBorderColor: Color = 禁用时边框颜色,默认跟unfocusedBorderColor 一样
errorBorderColor: Color = 错误边框颜色,默认主题error色,主题error默认0xFFB00020,
leadingIconColor: Color = 前icon的颜色,默认onSurface的0.54f透明度
disabledLeadingIconColor: Color = 禁用前icon颜色,默认onSurface的0.38f透明度
errorLeadingIconColor: Color = 错误前icon颜色,默认前icon的颜色
trailingIconColor: Color = 后icon的颜色,默认onSurface的0.54f透明度
disabledTrailingIconColor: Color = 禁用后icon颜色,默认onSurface的0.38f透明度
errorTrailingIconColor: Color = 错误后icon颜色,默认前icon的颜色,
focusedLabelColor: Color = 聚焦label颜色,默认主题primary色的hight透明度色
unfocusedLabelColor: Color = 未聚焦label颜色,默认主题onSurface色的medium透明度色(0.6f - 0.74f)
disabledLabelColor: Color = 禁用时label颜色,默认主题onSurface色的disabled透明度色(0.38f)
errorLabelColor: Color = 错误时label颜色,默认主题error色,主题error默认0xFFB00020
placeholderColor: Color = 占位符颜色(类似于原android的hilt)默认onSurface的medium透明度(0.6f - 0.74f)
disabledPlaceholderColor: Color = 禁用占位符颜色,默认onSurface的disabled透明度(0.38f)
如果想批量修改默认文字颜色,而不像每一个OutlinedTextField都设置TextFieldColors,可以这样:
CompositionLocalProvider(LocalContentColor provides MaterialTheme.colors.primary) {
SomeScreen()
}
SomeScreen()下的LocalContentColor .current 将拿到MaterialTheme.colors.primary的值,而不用每一个都修改。