我目前正在尝试在我的应用程序中实现主题,并且在尝试设置Dialogs样式时遇到了问题。
<style name="MyTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
...
<item name="android:colorBackground">@color/background</item>
<item name="colorPrimary">@color/colorPrimary</item>
...
<!-- AppCompat Dialog Attributes -->
<item name="dialogTheme">@style/AppCompatDialog</item>
<item name="alertDialogTheme">@style/AppCompatAlert</item>
</style>
例如,MyTheme正确设置colorPrimary和colorBackground,它在应用程序的大多数区域都能正常工作。当我需要引用它们时,我会像这样使用它们。
<LinearLayout
android:background="?android:colorBackground"
...>
<TextView
android:id="@+id/title"
style="@style/TextAppearance.AppCompat.Display1"
android:background="?attr/colorPrimary"
... />
但是,当我设置我的dialogTheme和alertDialogTheme样式时,颜色似乎默认为其他颜色。
<style name="MyAlertDialogStyle" parent="Base.Theme.AppCompat.Dialog">
...
<item name="android:background">?android:colorBackground</item>
</style>
这不会使用我定义的colorBackground,而是使用浅灰色(默认?)颜色。
以下是结果示例。
<style name="MyAlertDialogStyle" parent="Base.Theme.AppCompat.Dialog">
<item name="android:windowTitleStyle">@style/MyTitleTextStyle</item>
<!-- Used for the buttons -->
<item name="android:colorAccent">?colorAccent</item>
<!-- Used for the title and text -->
<item name="android:textColorPrimary">?colorAccent</item>
<!-- Used for the background -->
<item name="android:background">?android:colorBackground</item>
</style>
左侧(&#34; Desired&#34;)使用正常颜色,例如@color/colorAccent
,右侧(&#34;结果&#34;)如果我尝试使用主题会发生什么颜色?colorAccent
。
如何正确引用主题的主题颜色?
另外,有些相关的问题,我试图设置我的工具栏,但它没有效果。
<style name="MyTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar" >
...
<item name="toolbarStyle">@style/toolbarStyle</item>
</style>
<style name="toolbarStyle" parent="Base.Widget.AppCompat.Toolbar">
<item name="android:background">@drawable/header_background</item>
</style>
知道为什么这不起作用吗?
谢谢!
答案 0 :(得分:0)
通过在“活动”的主题中设置此属性,我至少能够使API> = 23中的对话框背景成为主题:
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:colorBackgroundFloating">@color/gunmetal</item>
</style>
然后确保您的活动在AndroidManifest.xml中使用了它:
<activity
android:name="package.your.YourActivity"
android:theme="@style/AppTheme"
...
答案 1 :(得分:0)
扩展DialogFragment
时,请在主题中使用AppCompatDialogFragment
<style name="YourAppTheme" parent="Theme.AppCompat">
<item name="colorBackgroundFloating">your_desired_color</item>
</style>
,不带android
前缀。
经过API 21+测试