我正在尝试从一个设置为Theme.Light的PreferenceActivity中显示对话框,但是对话框上显示的文字是黑色的,背景也是黑色的。我认为它使用黑色文本是因为它从父Activity中继承了文本颜色或类似的东西。当设置为Theme.Light时,我希望对话框要么在黑色背景上使用白色文本,要么在白色背景上使用黑色文本,就像PreferenceActivity一样。
这似乎是一个已知的问题,我发现的解决方法涉及创建和使用一个扩展Theme.Dialog的自定义样式,并使用它来实例化对话框。大致如下:
这似乎是一个已知的问题,我发现的解决方法涉及创建和使用一个扩展Theme.Dialog的自定义样式,并使用它来实例化对话框。大致如下:
<style name="CustomDialog" parent="@android:style/Theme.Dialog">
<item name="android:textColor">?android:attr/textColorPrimaryInverseDisableOnly</item>
</style>
Dialog dialog = new Dialog(context, R.style.CustomDialog);
我尝试了这个,但是没有任何改变。我也尝试了多个不同的textColor值,但是都无法修改对话框的文本颜色。为了验证,我添加了以下内容:
<item name="android:background">#FFFF0000</item>
为了样式的需求,我创建了一个红色背景的对话框(所以我确信我已经正确地实例化了对话框)。
我找到的最接近解决方案就是将对话框的背景颜色设置为白色,这样就得到了下面的对话框。但这并不是一个好的解决方案,因为某些版本或某些设备可能会在反转文本颜色时使用不同的行为:
那么,在从Theme.Light活动显示的对话框中设置文本颜色的好方法是什么呢?