- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在为我们的应用程序使用 Material 组件主题。现在我们想要一种自定义字体,我设法将其应用于下面主题的几乎所有地方,它使用 Material 组件定义的各种 textAppearance...
属性。
这非常有效,并且主题也几乎无处不在地应用于 AlertDialogs——消息文本和按钮具有自定义字体,按钮具有正确的强调色等。
无论如何,只有对话框标题保留 Roboto 字体。
<!-- externalized font name for easier change -->
<string name="font_regular" translatable="false" tools:ignore="ReferenceType">@font/atma_regular</string>
<style name="Theme.App" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColorPrimary">@color/textColorPrimary</item>
<item name="android:textColorSecondary">@color/textColorSecondary</item>
<item name="textAppearanceHeadline1">@style/TextAppearance.App.Button</item>
<item name="textAppearanceHeadline2">@style/TextAppearance.App.Button</item>
<item name="textAppearanceHeadline3">@style/TextAppearance.App.Button</item>
<item name="textAppearanceHeadline4">@style/TextAppearance.App.Button</item>
<item name="textAppearanceHeadline5">@style/TextAppearance.App.Button</item>
<item name="textAppearanceHeadline6">@style/TextAppearance.App.Button</item>
<item name="textAppearanceSubtitle1">@style/TextAppearance.App.Subtitle1</item>
<item name="textAppearanceSubtitle2">@style/TextAppearance.App.Subtitle2</item>
<item name="textAppearanceBody1">@style/TextAppearance.App.Body1</item>
<item name="textAppearanceBody2">@style/TextAppearance.App.Body2</item>
<item name="textAppearanceButton">@style/TextAppearance.App.Button</item>
<item name="android:textAppearanceLarge">@style/TextAppearance.App.Large</item>
<item name="android:textAppearanceMedium">@style/TextAppearance.App.Medium</item>
<item name="android:textAppearanceSmall">@style/TextAppearance.App.Small</item>
</style>
<style name="TextAppearance.App.Subtitle1" parent="TextAppearance.MaterialComponents.Subtitle1">
<item name="fontFamily">@string/font_regular</item>
<item name="android:fontFamily">@string/font_regular</item>
</style>
...
我试着像这样为警告对话框定义一个额外的主题:
<style name="Theme.App" parent="Theme.MaterialComponents.Light.NoActionBar">
...
<item name="alertDialogTheme">@style/Theme.App.AlertDialog</item>
...
</style>
<style name="Theme.App.AlertDialog" parent="Theme.MaterialComponents.Light.Dialog.Alert">
<item name="android:windowTitleStyle">@style/TextAppearance.App.DialogWindowTitle</item>
</style>
<style name="TextAppearance.App.DialogWindowTitle" parent="ThemeOverlay.MaterialComponents.Dialog.Alert">
<item name="fontFamily">@string/font_regular</item>
<item name="android:fontFamily">@string/font_regular</item>
<item name="android:textSize">30sp</item>
</style>
但这会重置各处的颜色和字体。唯一应用的是 textSize。
实现这个真的不应该那么难,但我现在没有想法。我可以以编程方式应用字体,但这会很丑陋。
最佳答案
正如您提到的,由 MaterialAlertDialogBuilder
创建的 AlertDialog
使用您应用中的 textAppearanceSubtitle1
属性定义的样式主题。
否则你可以改变AlertDialog
使用的风格,使用类似:
new MaterialAlertDialogBuilder(MainActivity.this,
R.style.MyTitle_ThemeOverlay_MaterialComponents_MaterialAlertDialog)
.setTitle("Title")
.setMessage("Message......")
.setPositiveButton("ok", null)
.setNegativeButton("Cancel", null)
.show();
在您的样式中,您必须自定义 materialAlertDialogTitleTextStyle
属性:
<style name="MyTitle_ThemeOverlay.MaterialComponents.MaterialAlertDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<item name="materialAlertDialogTitleTextStyle">@style/MyTitle_MaterialAlertDialog.MaterialComponents.Title.Text</item>
</style>
<style name="MyTitle_MaterialAlertDialog.MaterialComponents.Title.Text" parent="@style/MaterialAlertDialog.MaterialComponents.Title.Text">
<item name="android:textAppearance">@style/MyTitle_TextAppearance.MaterialComponents.Subtitle1</item>
</style>
<style name="MyTitle_TextAppearance.MaterialComponents.Subtitle1" parent="TextAppearance.MaterialComponents.Subtitle1">
<item name="fontFamily">....</item>
<item name="android:fontFamily">....</item>
<item name="android:textStyle">.....</item>
</style>
关于android - Theme.MaterialComponents 不会更改对话框标题的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52689786/
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想要改善这个问题吗?更新问题,以便将其作为on-topi
我正在使用自定义主题,代码如下:- 自定义样式.xml #FFFFFF 40dp @style/CustomWindowTitleBackground
我正在尝试将不同的 html(主题)应用到我的首页 (index.html),而我的所有其他页面都将具有相同的主题 (index_in.html)。我正在尝试这种方式,并想知道为什么它不起作用: 摘自
如何准确地、一步一步地安装夹层主题? 例如,Moderna free theme . 最佳答案 先决条件: 0) 版本控制 Python 2.7.6. Django 1.6.10 Mezzanine
使用 gatsby-plugin-theme-ui 构建 Gatsby 主题时,文档指出您可以通过将其添加到嵌套颜色对象中的主题对象来调整主体的背景颜色。这似乎没有效果。字体和样式等其他变量正确引入,
使用 gatsby-plugin-theme-ui 构建 Gatsby 主题时,文档指出您可以通过将其添加到嵌套颜色对象中的主题对象来调整主体的背景颜色。这似乎没有效果。字体和样式等其他变量正确引入,
我使用“@android:style/Theme.Holo”作为我的游戏主题: 但是为了能够设置 snackbar 小部件,我别无选择,只能使用“@style/Theme.AppCompat”,否则我
我使用这些说明通过 zopeskel 创建了一个新主题 http://docs.plone.org/adapt-and-extend/theming/theme_product_with_diazo.
我正在为我的工具栏使用当前的样式和主题,并使用一个支持库。我正在扩展 AppCompatActivity 而不是正常 Activity 。 false true
我用了但是 Theme.Holo 不起作用。 Android list : 截图: 最佳答案 根据documentation ,您引用的主题不存在。 在这种情况下,它被称为Theme_Holo_No
我正在尝试发布一个 github 博客页面,两个月前我可以毫无问题地将其发布到 github.io 页面,但现在抛出错误。我仍然可以在本地成功构建 jekyll 主题。 但是,当我将其推送到 gith
我最近使用 Android Asset Studio 为应用程序生成自定义操作栏主题,当我将所有内容放入我的项目时,应用程序崩溃并出现以下异常: java.lang.IllegalStateExcep
在较新版本的 Android Studio 中 在 values 目录中有 theme.xml 和 theme.xml(night) 可以指出它们之间的区别吗? 它会取代styles.xml 吗? 最
我想在 Atom 编辑器中为我的不同项目提供多个 UI 主题和语法主题,即每个打开的窗口都有一个主题,我该如何做到这一点?目前,更改首选项中的一项将会更改所有打开的窗口。 我安装了项目管理器插件,并尝
我只是为了安装magento 2.1.i迁移我的数据库感谢magento提供的工具。它工作得很好! 但是问题是,当我运行前端时,我收到此错误:无法通过指定的键加载主题:'pure' 当我想在管理中更改
我不喜欢 CustomTheme 的外观,我想保留 AppTheme。 但是当我将自定义标题栏与 AppTheme 一起使用时,它崩溃了,告诉我我无法组合多种样式。 我该怎么做? 谢谢! 最佳答案 首
我正在记录这个警告: I/AppCompatViewInflater:app:theme 现已弃用。请改为使用 android:theme。 奇怪的是,我使用了 Android Studio 的 Fi
我有一个“轻”主题的应用程序: @color/primary @color/primary_dark @color/accent 我希望我的 Toolbar 是深
我在 list 文件中声明我的 Activity ,如下所示。 我声明了全
这个问题在这里已经有了答案: You need to use a Theme.AppCompat theme (or descendant) with this activity (63 个答案)
我是一名优秀的程序员,十分优秀!