更改全息微调器的文字颜色

我在Holo主题对话框中有一个微调,并且正在尝试更改文本颜色,因为它很难阅读:

对话框微调器文字颜色

我已经看了android styles.xml,以及许多其他的答案,并相信我正确设置自定义样式; 但它只是没有得到回应。

这是Spinner所在的对话框布局文件的摘录:

<Spinner android:id="@+id/spn_Type" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:entries="@array/dose_type_options" style="@style/DialogSpinner" /> 

这些是values-v14文件夹中styles.xml中的相关条目:

 <style name="DialogSpinner" parent="@android:style/Widget.Holo.Spinner"> <item name="android:spinnerItemStyle">@style/MySpinnerItem</item> </style> <style name="MySpinnerItem" parent="android:Widget.Holo.TextView.SpinnerItem"> <item name="android:textAppearance">@style/MyTextAppearanceSpinnerItem</item> </style> <style name="MyTextAppearanceSpinnerItem" parent="android:TextAppearance.Holo.Widget.TextView.SpinnerItem"> <item name="android:textColor">#FFF</item> </style> 

对话本身被强制为全息黑暗的主题,使用:

 <style name="FibroDialog" parent="@android:style/Theme.Holo.Dialog"> </style> 

任何人都可以确定为什么微调文本不是白色的?

我已经看了其他的解决scheme,build议改变代码的颜色,但这个应用程序支持2.3。*向上,所以对于那些非全息版本黑色文本是好的,因此试图通过样式。

谢谢

使用下面的Woda的答案更新

微调器初始值的文本颜色现在是白色的,这对于突出显示用户有一个微调器来说是很长的路要走:

对话框微调器文字颜色2

但是可选项目的文字颜色仍然是黑色的。 我想这不是一个大问题,至less通过将初始文本变为白色来确认微调器的存在。 但是我想知道为什么这些物品还是黑色的,以及如何将它们改成白色。

Solutions Collecting From Web of "更改全息微调器的文字颜色"

你有没有试图接受SpinnerItemStyle到你的主题? 所以你的应用程序中的所有Spinners将具有相同的风格。 我使用它是这样的,它的工作原理:

theme.xml:

 <style name="exampleTheme" parent="android:Theme.Holo.Light"> <item name="android:spinnerItemStyle">@style/SpinnerItem_example</item> ... </style> 

style.xml:

 <style name="SpinnerItem_example" parent="android:TextAppearance.Widget.TextView.SpinnerItem"> <item name="android:textColor">#000000</item> </style> 

更新:深入了解styles.xml为我带来了这个:

 <style name="Widget.DropDownItem.Spinner"> <item name="android:checkMark">?android:attr/listChoiceIndicatorSingle</item> </style> <style name="Widget.DropDownItem"> <item name="android:textAppearance">@style/TextAppearance.Widget.DropDownItem</item> <item name="android:paddingStart">@dimen/dropdownitem_text_padding_left</item> <item name="android:paddingEnd">@dimen/dropdownitem_text_padding_right</item> <item name="android:gravity">center_vertical</item> </style> 

所以你可能需要自定义Widget.DropDownItem并在你的主题中接受它。

 ... <item name="dropDownItemStyle">@android:style/Widget.DropDownItem</item> ... 

为了定制我的应用程序,以下两个链接帮助我理解了不同视图的结构。 这两个文件是android源代码的一部分。 也许它也可以帮助你。

  • 的themes.xml
  • styles.xml

我通过调用来修复它

 mArrayAdapter.setDropDownViewTheme(mActivity.getTheme()); 

希望这可以帮助别人;)

您可以在代码中访问内部TextView而不更改任何样式。 这是我处理启用和禁用Spinners的方式

.getSelectedView()不适合我。 所以我欺骗了Spinner“显示”被禁用。

您需要为“禁用”外观定义自己的颜色。

例如:

 R.color.blue_text //means enabled R.color.gray_text //means disabled 

所以要禁用我的微调:

 ((TextView)mySpinner.getChildAt(0)).setTextColor(getResources().getColor(R.color.gray_text)); mySpinner.setEnabled(false); mySpinner.setFocusable(false); 

为了使我的微调:

 ((TextView)mySpinner.getChildAt(0)).setTextColor(getResources().getColor(R.color.blue_text)); mySpinner.setEnabled(true); mySpinner.setFocusable(true); 

getChildAt(0)函数允许您访问微调器中的第一项,这就是您在屏幕上以TextView的forms显示的内容。

您不需要更改样式或修改任何XML。 只要在你的代码中做到这一点,即使在事件方法,你应该没问题。