Android SDK30+下Kotlin中Snackbar文本字体样式设置方法
解决高版本SDK下Kotlin中Snackbar文本字体设置问题
核心原因
AndroidX迁移完成后,原android.support.design.R.id.snackbar_text已被替换为com.google.android.material.R.id.snackbar_text,这就是你遇到未解析引用问题的根本原因。
实现步骤
- 正确获取Snackbar的文本控件:使用AndroidX下Material组件的ID定位Snackbar内部的TextView。
- 加载并设置自定义字体:通过
Typeface加载本地字体文件,再赋值给目标TextView。
完整代码示例
修改你的showSnackbar函数如下:
private fun showSnackbar(message: String) { val coordinatorLayout: CoordinatorLayout = findViewById(R.id.coordinatorLayout) val snackbar = Snackbar.make(coordinatorLayout, message, Snackbar.LENGTH_INDEFINITE) // 获取Snackbar的文本TextView val snackbarTextView = snackbar.view.findViewById<TextView>(com.google.android.material.R.id.snackbar_text) // 设置自定义字体(假设字体文件放在assets/fonts/目录下,文件名为custom_font.ttf) val customTypeface = Typeface.createFromAsset(assets, "fonts/custom_font.ttf") snackbarTextView.typeface = customTypeface // 原有样式设置 snackbar.setBackgroundTint(Color.CYAN) snackbar.setAction("DISMISS") { // 点击DISMISS的执行逻辑 } snackbar.setTextColor(Color.BLACK) // 可选:额外设置其他文本属性,比如行间距 snackbarTextView.lineSpacingMultiplier = 1.2f snackbar.show() }
补充说明
- 确保项目依赖中包含Material Components库(高版本SDK默认集成,若缺失可手动添加):
implementation 'com.google.android.material:material:1.6.0+' - 字体文件需放在
src/main/assets/fonts/目录下(无此目录可自行创建),代码中路径需与实际文件位置一致。 - 通过获取到的
snackbarTextView,还可设置字重、文字阴影、对齐方式等更多文本样式。
内容的提问来源于stack exchange,提问作者neelshenning
相关产品推荐
相关产品推荐

