应用 AppCompat 主题

AppCompat 支持库提供了使用 Material Design 规范构建应用程序的主题。活动扩展 AppCompatActivity 也需要一个父母为 Theme.AppCompat 的主题。

第一步是自定义主题的调色板以自动为你的应用着色。
在你的应用程序的 res/styles.xml 中,你可以定义:

<!-- inherit from the AppCompat theme -->
<style name="AppTheme" parent="Theme.AppCompat">

    <!-- your app branding color for the app bar -->
    <item name="colorPrimary">#2196f3</item>
    
    <!-- darker variant for the status bar and contextual app bars -->
    <item name="colorPrimaryDark">#1976d2</item>

    <!-- theme UI controls like checkboxes and text fields -->
    <item name="colorAccent">#f44336</item>
</style>

除了具有深色背景的 Theme.AppCompat,你还可以使用 Theme.AppCompat.LightTheme.AppCompat.Light.DarkActionBar

你可以使用自己的颜色自定义主题。材料设计规范颜色图表材质调色板中有很好的选择。500 颜色是初级的好选择(本例中为蓝色 500); 为暗色选择相同色调的 700; 和一种来自不同色调的色调作为强调色。主要颜色用于应用程序的工具栏及其在概览(最近的应用程序)屏幕中的输入,用于着色状态栏的较暗变体以及用于突出显示某些控件的强调颜色。

创建此主题后,将其应用于 AndroidManifest.xml 中的应用程序,并将主题应用于任何特定活动。这对于应用 AppTheme.NoActionBar 主题非常有用,该主题允许你实现非默认工具栏配置。

<application android:theme="@style/AppTheme" 
    ...>
    <activity 
        android:name=".MainActivity"
        android:theme="@style/AppTheme" />
</application>

你还可以使用 android:themeThemeOverlay 主题将主题应用于各个视图。例如,使用 Toolbar

<android.support.v7.widget.Toolbar
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="?attr/colorPrimary"
  android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

还是一个 Button

<Button
    style="@style/Widget.AppCompat.Button.Colored"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@style/MyButtonTheme"/>

<!-- res/values/themes.xml -->
<style name="MyButtonTheme" parent="ThemeOverlay.AppCompat.Light">
    <item name="colorAccent">@color/my_color</item>
</style>