黑暗活动对话框主题不起作用
Posted
技术标签:
【中文标题】黑暗活动对话框主题不起作用【英文标题】:Dark activity dialog theme not working 【发布时间】:2018-01-15 15:20:24 【问题描述】:我想要一个深色的活动对话框主题,所以我定义如下:
<style name="AppThemeDialogActivityDark" parent="Theme.AppCompat.Dialog">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- dark toolbar + dark popup menu -->
<item name="toolbarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
<!-- trying to forcefully set the background and text color -->
<item name="android:windowBackground">@android:color/background_dark</item>
<item name="android:textColor">@color/white</item>
<item name="android:minWidth">320dp</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>
活动:
public class FeedbackActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
// darkTheme returns true!!!
setTheme(MainApp.getPrefs().darkTheme() ? R.style.AppThemeDialogActivityDark : R.style.AppThemeDialogActivity);
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_feedback);
布局:
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<LinearLayout
android:orientation="vertical"
android:layout_
android:layout_>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
android:background="?attr/colorPrimary"
android:elevation="4dp"
app:theme="?toolbarTheme"/>
<ListView
android:padding="12dp"
android:id="@+id/lvFeedback"
android:layout_
android:layout_ />
<ScrollView
android:id="@+id/svFeedback"
android:layout_
android:layout_weight="1"
android:layout_>
<TextView
android:padding="12dp"
android:id="@+id/tvFeedback"
android:layout_
android:layout_ />
</ScrollView>
<Button
android:padding="12dp"
android:id="@+id/btButton"
style="?borderlessButtonStyle"
android:elevation="4dp"
android:layout_
android:layout_ />
</LinearLayout>
</layout>
我在这里缺少什么?为什么我的活动对话框的背景是白色而不是深色???
编辑 - 有趣的细节
将视图背景设置为android:background="?android:windowBackground"
确实有效。但我必须为 ListView 和 TextView 执行此操作。这个主题属性有效意味着,主题应用正确,似乎默认背景是在对话框主题的另一个主题属性中定义的?
我的ListView
项目的主题也正确,只需使用android.R.layout.simple_list_item_1
作为布局,我不需要设置它们的背景/文本颜色,它们为深色主题正确设置了主题,但如果我不这样做,则不可见'不要像上面那样手动设置ListView
背景
【问题讨论】:
您应该检查您的 values-vxx 文件夹并查看其中的样式文件。也许对于其中一些人来说,风格与您需要的不同。此外,您应该检查您的布局文件,看看他们是否使用了您的样式文件中的任何指定样式。 这是个好主意,但我很懒惰为不同的屏幕尺寸创建特殊样式,现在检查了一下,事实并非如此 我添加了我的 xml 布局,我没有在其中手动设置任何背景颜色...而且我没有在代码中设置任何颜色,该活动是一个非常简单的活动,只有几个仅代码行 也许这种情况会失败并回退到使用AppTheneDialogActivity
:setTheme(MainApp.getPrefs().darkTheme() ? R.style.AppThemeDialogActivityDark : R.style.AppThemeDialogActivity);
。你检查了吗?
检查了这个,它肯定不会失败。甚至删除它并使用setTheme(R.style.AppThemeDialogActivityDark)
并进行了干净的构建,没有区别,我仍然得到白色背景
【参考方案1】:
尝试更换父母
parent="@android:style/Theme.Material.Dialog.Alert"
【讨论】:
以上是关于黑暗活动对话框主题不起作用的主要内容,如果未能解决你的问题,请参考以下文章