如何获得 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 个不同的主题文件(valuesvalues-v11values-v14values-large-v11values-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 的深色操作栏?的主要内容,如果未能解决你的问题,请参考以下文章

求教,如何获得comboBox中当前选择的值

如何获得物体度数?

如何在一行上获得 3d 瓷砖并在悬停时获得缩放效果?

PHP如何获得POST传来的值?

CSDN如何获取C币

SQl中如何获得时间的时,分,秒部分?