如何获得Theme.Holo.Light.DialogWhenLarge的黑暗动作栏?

时间:2013-09-12 16:32:35

标签: android android-activity android-styles

当设备屏幕足够大时,我想将我的一些应用活动显示为白色“弹出窗口”。所以我使用 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 主题活动,但有一个黑暗的操作栏?

3 个答案:

答案 0 :(得分:1)

看起来你只需要复制一次DialogWhenLarge

in values / themes:

<style name="PopupActivity" parent="@android:style/Theme.Holo.Light.DarkActionBar">
</style>

in values-large / themes:

<style name="PopupActivity"
        parent="@android:style/Theme.Holo.Light.DialogWhenLarge">
</style>

请注意,您也可以使用Theme.Holo.Light.Dialog.MinWidth作为大型版本的父级,但如果将某些内容添加到DialogWhenLarge主题中,则会错过这些内容。

应该可行,但我没有任何设置来测试它。

答案 1 :(得分:1)

问题现在真的很老了,但我想我有一个更清洁的方法来处理这个问题:

<style name="fullScreenDialogTheme" parent="Base.Theme.AppCompat.Light.DialogWhenLarge">
    <item name="actionBarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>

答案 2 :(得分:0)

我意识到这是一个老问题,但在为现有应用添加平板电脑支持时遇到了同样的问题。我还尝试使用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'
}

这也导致了其他更改,例如添加导航到操作栏的后退箭头,以及按钮文本变为allCaps,但这是另一回事。