如何获得 Theme.Holo.Light.DialogWhenLarge 的深色操作栏?
Posted
技术标签:
【中文标题】如何获得 Theme.Holo.Light.DialogWhenLarge 的深色操作栏?【英文标题】:How to get dark action bar for Theme.Holo.Light.DialogWhenLarge? 【发布时间】:2013-09-12 16:32:34 【问题描述】:当设备屏幕足够大时,我想将我的一些应用活动显示为白色“弹出窗口”。所以我用 Theme.Holo.Light.DialogWhenLarge
来设计这些活动:
<style name="PopupActivity" parent="@android:style/Theme.Holo.Light.DialogWhenLarge"></style>
但由于 Holo Light 主题,这样我会得到浅色(白色)操作栏(当活动未呈现为对话框时)。我知道有 Theme.Holo.Light.DarkActionBar
主题来获取白色内容和黑条,但显然因为Theme.Holo.Light.DialogWhenLarge
而我不能使用它。所以我尝试将我的风格改为:
<style name="PopupActivity" parent="@android:style/Theme.Holo.Light.DialogWhenLarge">
<item name="android:actionBarStyle">@android:style/Widget.Holo.ActionBar</item>
</style>
但没有结果。 我怎样才能有一个 Theme.Holo.Light.DialogWhenLarge
主题活动,但操作栏是黑色的?
【问题讨论】:
设备足够大意味着什么?你是说7寸平板+? 【参考方案1】:看起来你只需要复制一份 DialogWhenLarge
在价值观/主题中:
<style name="PopupActivity" parent="@android:style/Theme.Holo.Light.DarkActionBar">
</style>
在值-大/主题中:
<style name="PopupActivity"
parent="@android:style/Theme.Holo.Light.DialogWhenLarge">
</style>
请注意,您也可以使用 Theme.Holo.Light.Dialog.MinWidth
作为大型版本的父级,但如果将内容添加到 DialogWhenLarge 主题中,您将错过这些内容。
应该可以,但我没有任何设置来测试它。
【讨论】:
好的,我使用了你的解决方案:由于支持 API-11(我需要 DialogWhenLarge,但是 DarkActionBar不存在)和 API-14,我现在有 5 个不同的主题文件(values
、values-v11
、values-v14
、values-large-v11
和 values-large-v14
)! :) 但它看起来像预期的那样工作。谢谢。
哈哈好吧,不同的 API 版本让主题变得混乱。【参考方案2】:
这个问题现在真的很老了,但我认为我有一种更简洁的方法来处理这个问题:
<style name="fullScreenDialogTheme" parent="Base.Theme.AppCompat.Light.DialogWhenLarge">
<item name="actionBarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>
【讨论】:
【参考方案3】:我意识到这是一个老问题,但在为现有应用添加平板电脑支持时遇到了同样的问题。我还尝试使用 DialogWhenLarge 主题和为某些活动自定义 actionBar。该应用程序是使用版本 19 的支持库构建的。升级到版本 22 使自定义样式生效。
我用的是Android Studio,build.gradle文件改自
dependencies
compile 'com.android.support:support-v4:19.1.0'
compile 'com.android.support:appcompat-v7:19.1.0'
到
dependencies
compile 'com.android.support:support-v4:22.0.0'
compile 'com.android.support:appcompat-v7:22.0.0'
这也导致了其他的变化,比如为操作栏添加了一个后退箭头,按钮文本也变成了全大写,但那是另一回事了。
【讨论】:
以上是关于如何获得 Theme.Holo.Light.DialogWhenLarge 的深色操作栏?的主要内容,如果未能解决你的问题,请参考以下文章