我尝试仅使用Material Components中的小部件,但是在许多情况下,没有记录如何实现样式。
让我们考虑MaterialAlertDialog
。
每次我想显示一个对话框时,我都会调用这段代码:
MaterialAlertDialogBuilder(context, R.style.Theme_MyApp_Dialog_Alert)
.setTitle("Title")
.setMessage("This is message.")
.setPositiveButton(R.string.ok) { _, _ -> }
.show()
如您所见,我正在使用自定义主题。
<style name="Theme.MyApp.Dialog.Alert" parent="ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<!-- attributes here -->
</style>
问题是某些属性不起作用。例如textColor
。因此问题是如何更改MaterialAlertDialog
中的正文或标题文本颜色?
我使用的是材料组件的最新版本-1.1.0-alpha07
。
PS。
我不确定哪个主题应该是父主题。在Material Theme Builder中,他们使用的@style/ThemeOverlay.MaterialComponents.Dialog.Alert
实际上使对话框看起来“很旧”。
答案 0 :(得分:3)
您可以使用以下方法简单地覆盖默认颜色:
<style name="Theme.MyApp.Dialog.Alert" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<!-- Text Color for title and message -->
<item name="colorOnSurface">@color/....</item>
....
</style>
否则,您可以使用以下方法自定义标题和正文所使用的样式:
<style name="Theme.MyApp.Dialog.Alert" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<!-- Title -->
<item name="materialAlertDialogTitleTextStyle">@style/MyTitle_MaterialAlertDialog.MaterialComponents.Title.Text</item>
<!-- Body -->
<item name="materialAlertDialogBodyTextStyle">@style/BodyTextAppearance.MaterialComponents.Body2</item>
</style>
<style name="MyTitle_MaterialAlertDialog.MaterialComponents.Title.Text" parent="@style/MaterialAlertDialog.MaterialComponents.Title.Text">
<item name="android:textColor">@color/...</item>
<item name="android:textAppearance">@style/....</item>
</style>
<style name="BodyTextAppearance.MaterialComponents.Body2" parent="@style/MaterialAlertDialog.MaterialComponents.Body.Text">
<item name="android:textColor">@color/....</item>
<item name="android:textSize">20sp</item>
<item name="android:textStyle">bold</item>
<item name="android:textAllCaps">true</item>
<item name="fontFamily">sans-serif-condensed-light</item>
</style>
答案 1 :(得分:1)
按如下所示更改样式
<style name="Theme.MyApp.Dialog.Alert" parent="ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<item name="materialAlertDialogTitleTextStyle">@style/MaterialAlertDialogText</item>
</style>
创建MaterialAlertDialogText
样式并设置textColor
<style name="MaterialAlertDialogText" parent="@style/MaterialAlertDialog.MaterialComponents.Title.Text">
<item name="android:textColor">@color/yourTextColor</item>
</style>