我们如何使用自定义主题特定一个Activity来使用对话框主题

时间:2013-10-20 14:38:11

标签: android

目前,我们的应用程序有一个非常自己的自定义主题

// AndroidManifest.xml
<application
    ...
    android:theme="@style/Theme.JStock.Light.DarkActionBar" >

    <activity android:name="org.yccheok.jstock.gui.billing.ShopDialogFragmentActivity"
        android:windowSoftInputMode="stateAlwaysHidden" />

</application>


// themes.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.JStock.Light.DarkActionBar" parent="Theme.Sherlock.Light.DarkActionBar">
        <item name="watchlistLinearLayoutHeaderBackground">@color/watchlist_linear_layout_header_background_inverse_holo_light</item>
        ....
        <item name="homeMenuBackground">@color/home_menu_background_inverse_holo_light</item>
    </style>
</resource>

为了使ShopDialogFragmentActivity看起来像一个对话框,我尝试使用

    <activity android:name="org.yccheok.jstock.gui.billing.ShopDialogFragmentActivity"
        android:theme="@android:style/Theme.Dialog"
        android:windowSoftInputMode="stateAlwaysHidden" />

但是,这会产生问题。

ShopDialogFragmentActivity使用的布局文件无法再访问Theme.JStock.Light.DarkActionBar中定义的属性。

例如watchlistLinearLayoutHeaderBackgroundhomeMenuBackgroundShopDialogFragmentActivity不再可见,如果它正在使用@android:style/Theme.Dialog

我的猜测是,主题@android:style/Theme.Dialog已完全覆盖Theme.JStock.Light.DarkActionBarTheme.JStock.Light.DarkActionBar中定义的所有属性对于使用Activity中不同主题的Application不再可见。

我想知道,克服这个问题的优雅方法是什么?

1 个答案:

答案 0 :(得分:0)

使用 parent =“android:style / Theme.Dialog”

制作自定义样式
<style name="NoTitleDialog" parent="android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
</style>