Bre*_*ein 109 android android-theme
有以下Theme.AppCompat类:
Theme.AppCompat
Theme.AppCompat.Light
Theme.AppCompat.Light.DarkActionBar
Theme.AppCompat.NoActionBar
Theme.AppCompat.Light.NoActionBar
Theme.AppCompat.DialogWhenLarge
Theme.AppCompat.Light.DialogWhenLarge
Theme.AppCompat.Dialog
Theme.AppCompat.Light.Dialog
Theme.AppCompat.CompactMenu
Run Code Online (Sandbox Code Playgroud)
和以下ThemeOverlay.AppCompat类:
ThemeOverlay.AppCompat
ThemeOverlay.AppCompat.Light
ThemeOverlay.AppCompat.Dark
ThemeOverlay.AppCompat.ActionBar
ThemeOverlay.AppCompat.Dark.ActionBar
Run Code Online (Sandbox Code Playgroud)
例如,为什么要使用ThemeOverlay.AppCompat.light和Theme.AppCompat.Light?我发现为ThemeOverlay定义的属性要少得多 - 我很好奇ThemeOverlay的预期用例是什么.
Sur*_*gch 149
Theme.AppCompat用于设置整个应用程序的全局主题.ThemeOverlay.AppCompat用于覆盖(或"覆盖")特定视图的主题,尤其是工具栏.
让我们看一个为什么这是必要的例子.
ActionBar通常显示在应用程序中.我可以通过设置colorPrimary值来选择它的颜色.但是,更改主题会更改ActionBar上文本的颜色.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
由于我的主要颜色是深蓝色,我应该使用操作栏中使用浅色文本颜色的主题之一,因为黑色文本很难阅读.
使用Theme.AppCompat而不是Theme.Material的全部意义在于我们可以允许旧版本的Android使用我们的材质设计主题.问题是旧版本的Android不支持ActionBar.因此,文档建议隐藏ActionBar并向您的布局添加工具栏.要隐藏ActionBar,我们必须使用其中一个NoActionBar主题.以下图像显示隐藏了ActionBar的工具栏.
但是如果我想要一个带有DarkActionBar的Light主题呢?由于我必须使用NoActionBar,这不是一个选项.
这是ThemeOverlay的用武之地.我可以在工具栏xml布局中指定Dark ActionBar主题.
<android.support.v7.widget.Toolbar
...
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
Run Code Online (Sandbox Code Playgroud)
这最终使我们能够获得我们想要的效果.Dark.ActionBar主题覆盖了适用于此特定场合的Light应用主题.
Theme.AppCompat.Light.NoActionBarThemeOverlay.AppCompat.Dark.ActionBar如果你想让弹出菜单变亮,可以添加:
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
Run Code Online (Sandbox Code Playgroud)
我通过实验和阅读以下文章了解到了这一点.
ian*_*ake 69
根据AppCompat创建者的主题vs Style博客文章:
[ThemeOverlays]是特殊主题,它覆盖了普通的Theme.Material主题,覆盖了相关的属性,使它们变亮或变暗.
ThemeOverlay + ActionBar
你的目光也将看到ActionBar ThemeOverlay衍生品:
ThemeOverlay.Material.Light.ActionBarThemeOverlay.Material.Dark.ActionBar这些只能通过新
actionBarTheme属性与操作栏一起使用,或直接在工具栏上设置.唯一的东西,这些目前做的不同,以他们的父母是他们改变
colorControlNormal为android:textColorPrimary,从而使任何文本和图标不透明.
| 归档时间: |
|
| 查看次数: |
50966 次 |
| 最近记录: |