我想显示PreferenceActivity,它被设置为Theme.Light对话框。该对话框显示了在深色背景深色文字:Android:从Theme.Light活动显示对话框问题
我认为它使用深色文本,因为它继承了父活动,或类似文字的颜色。我希望对话框可以在黑色背景上使用白色文字,也可以使用带有深色文字的白色背景,因为PreferenceActivity设置为Theme.Light时会执行此操作。
这似乎是一个已知问题,我发现的解决方法涉及创建和使用扩展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活动显示对话框?
我似乎记得与类似的东西挣扎。从来没有得到它的工作。我最终的解决方法是拥有多个价值资源,其中一个将姜饼的颜色定义为黑色,即在res/values-v8中,以及在res/values中为淡色。 –
我的诱惑是将列表的背景硬编码为白色,列表的文字颜色为黑色。希望这可以保证白色背景上的黑色文本,而不管设备或版本。 – ab11
好的,那肯定会奏效。但我认为这种痛苦的关键是融入设备主题......姜饼比以前的版本要暗很多,因此是特殊情况。 –