Android Studio中textStyle:bold不生效,无法设置TextView文本加粗与字号
问题描述
我曾查阅过类似问题并尝试相关解决方案,但均无效。当前问题是无法将ID为contactName的TextView设置为加粗样式,也无法修改其字号,文本始终保持非加粗状态且字号无变化。
我需要将contactName的文本显示为加粗,相关布局代码如下:
<TextView android:id="@+id/contactName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="start" android:ellipsize="end" android:maxLines="1" android:overScrollMode="never" android:paddingEnd="4dp" android:textAppearance="@style/contactListTextPrimary" tools:ignore="RtlSymmetry" tools:text="Contact title" /> <style name="contactListTextPrimary" parent="@android:style/TextAppearance.Medium"> <item name="android:textColor">?android:attr/textColorPrimary</item> <item name="android:textStyle">bold</item> <item name="android:textSize">16sp</item> </style>
上述代码并未使文本变为加粗,样式无任何变化。以下是完整的styles.xml文件内容:
<resources> <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <item name="windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="windowActionModeOverlay">true</item> <item name="preferenceTheme">@style/PreferenceThemeOverlay</item> <item name="android:listDivider">@drawable/list_divider</item> <item name="colorPrimaryDark">@color/color_status_bar</item> </style> <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar"> <item name="android:textColorHint">@color/grey</item> <item name="android:tint">#FFFFFF</item> </style> <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> <style name="PreferenceThemeOverlay"> <item name="preferenceScreenStyle">@style/Preference.PreferenceScreen</item> <item name="preferenceFragmentStyle">@style/PreferenceFragment</item> <item name="preferenceCategoryStyle">@style/Preference.Category</item> <item name="preferenceStyle">@style/Preference</item> <item name="preferenceInformationStyle">@style/Preference.Information</item> <item name="checkBoxPreferenceStyle">@style/Preference.CheckBoxPreference</item> <item name="switchPreferenceCompatStyle">@style/Preference.SwitchPreferenceCompat</item> <item name="dialogPreferenceStyle">@style/Preference.DialogPreference</item> <item name="editTextPreferenceStyle">@style/Preference.DialogPreference.EditTextPreference </item> <item name="preferenceFragmentListStyle">@style/PreferenceFragmentList</item> </style> <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowBackground">@drawable/splash_screen</item> </style> <style name="LicensesTheme" parent="Theme.AppCompat.Light"></style> <style name="searchTextHighlight"> <item name="android:textColor">@color/colorAccent</item> <item name="android:textStyle">bold</item> </style> <style name="contactListTextPrimary" parent="@android:style/TextAppearance.Medium"> <item name="android:textColor">?android:attr/textColorPrimary</item> </style> <style name="textPrimarySmall" parent="@android:style/TextAppearance.Small"> <item name="android:textColor">?android:textColorPrimary</item> </style> <style name="textPrimary" parent="@android:style/TextAppearance.Medium"> <item name="android:textColor">?android:textColorPrimary</item> </style> <style name="textPrimaryLarge" parent="@android:style/TextAppearance.Large"> <item name="android:textColor">?android:textColorPrimary</item> </style> <style name="textSecondary" parent="@android:style/TextAppearance.Medium"> <item name="android:textColor">?android:textColorSecondary</item> </style> <style name="textSecondarySmall" parent="@android:style/TextAppearance.Small"> <item name="android:textColor">?android:textColorSecondary</item> </style> <style name="sectionTitleStyle" parent="@android:style/TextAppearance.Medium"> <item name="android:textColor">@color/colorAccent</item> <item name="android:textAllCaps">true</item> <item name="android:fontFeatureSettings">smcp</item> <item name="android:layout_marginBottom">@dimen/activity_padding</item> <item name="android:layout_marginTop">@dimen/activity_padding</item> </style> <style name="textMetaBubble"> <item name="android:textColor">?android:textColorSecondary</item> <item name="android:textSize">14sp</item> </style> <style name="ProgressBar" parent="Widget.AppCompat.ProgressBar.Horizontal"> <item name="android:minHeight">12dip</item> <item name="background">@color/colorChipBackground</item> </style> <style name="ToolbarSubtitleAppearance" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle"> <item name="android:textColor">?android:textColorSecondary</item> <item name="android:textSize">12sp</item> </style> <style name="ToolbarTitleAppearance" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title"> <item name="android:textColor">?android:textColorSecondary</item> <item name="android:textStyle">bold</item> <item name="android:textSize">15sp</item> </style> <style name="roundImageView" parent=""> <item name="cornerFamily">rounded</item> <item name="cornerSize">50%</item> </style> <style name="forwardToSheetDialog" parent="ThemeOverlay.MaterialComponents.BottomSheetDialog"> <item name="bottomSheetStyle">@style/forwardToBottomSheet</item> </style> <style name="forwardToBottomSheet" parent="Widget.MaterialComponents.BottomSheet.Modal"> <item name="backgroundTint">@null</item> <item name="shapeAppearanceOverlay">@style/forwardToAppearanceBottomSheetDialog</item> </style> <style name="forwardToAppearanceBottomSheetDialog" parent=""> <item name="cornerFamily">rounded</item> <item name="cornerSizeTopRight">16dp</item> <item name="cornerSizeTopLeft">16dp</item> <item name="cornerSizeBottomRight">0dp</item> <item name="cornerSizeBottomLeft">0dp</item> </style> </resources>
问题原因
从完整的styles.xml文件可以看到,你在布局代码中定义的contactListTextPrimary样式包含android:textStyle="bold"和android:textSize="16sp",但实际项目中的styles.xml里,该样式只定义了文本颜色属性,缺失了加粗和字号的配置,这直接导致样式不生效。
解决方案
方案一:修正styles.xml中的样式定义
直接修改styles.xml里的contactListTextPrimary样式,添加缺失的加粗和字号属性:
<style name="contactListTextPrimary" parent="@android:style/TextAppearance.Medium"> <item name="android:textColor">?android:attr/textColorPrimary</item> <item name="android:textStyle">bold</item> <item name="android:textSize">16sp</item> </style>
方案二:直接在TextView标签内添加属性(临时测试用)
如果需要快速验证效果,可以绕过样式,直接在TextView标签中添加加粗和字号属性:
<TextView android:id="@+id/contactName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="start" android:ellipsize="end" android:maxLines="1" android:overScrollMode="never" android:paddingEnd="4dp" android:textAppearance="@style/contactListTextPrimary" android:textStyle="bold" android:textSize="16sp" tools:ignore="RtlSymmetry" tools:text="Contact title" />
额外提示
如果修改样式后仍不生效,执行Clean Project后再Rebuild Project,避免缓存导致的样式未更新。
内容的提问来源于stack exchange,提问作者SanMiguel
相关产品推荐
相关产品推荐

