Themes & Styles
Define reusable Styles for widgets and Themes for your app. Set up Material 3 color roles, typography scale, custom fonts, and dark mode.
Styles vs Themes
Two concepts often confused:
- Style — a collection of view attributes applied to a single widget (e.g., text size, color, padding). Set with
style="@style/MyButton". - Theme — a collection of semantic attributes applied to an Activity or app. Views look up theme attributes with
?attr/colorPrimary.
Defining a Style
Create styles in res/values/styles.xml. Styles can inherit from a parent:
<!-- res/values/styles.xml -->
<resources>
<style name="TitleText" parent="TextAppearance.Material3.HeadlineMedium">
<item name="android:textColor">@color/on_surface</item>
<item name="android:fontFamily">@font/roboto_bold</item>
</style>
<style name="PrimaryButton" parent="Widget.Material3.Button">
<item name="android:paddingHorizontal">24dp</item>
<item name="cornerRadius">8dp</item>
</style>
</resources>
<!-- Using a style in XML: -->
<TextView
style="@style/TitleText"
android:text="Hello!" />