我在Holo主题对话框中有一个微调器,我正在尝试更改文本颜色,因为它很难阅读:
我查看了android styles.xml以及许多其他答案,并且相信我正确设置了自定义样式;但它只是没有被捡起来。
这是微调器所在的对话框布局文件的摘录:
<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>
使用以下方法强制对话框本身为Holo dark主题:
<style name="FibroDialog" parent="@android:style/Theme.Holo.Dialog">
</style>
任何人都可以确定微调器文本不是白色的原因吗?
我已经查看了其他解决方案,建议更改代码中的颜色,但此应用程序支持2.3。*向上,因此对于那些非全息版本,黑色文本很好,因此尝试按样式执行。
由于
使用Woda下面的回答更新
微调器的初始值的文本颜色现在为白色,这对于突出显示用户有一个微调器非常重要:
但可选项目的文字颜色仍为黑色。我想这不是一个大问题,至少通过将初始文本变为白色来确认微调器的存在。但我很想知道为什么这些物品仍然是黑色的,以及如何将它们变成白色。
答案 0 :(得分:5)
您是否尝试过接受主题的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源代码的一部分。也许对你有帮助。
答案 1 :(得分:2)
我通过调用
修复了它mArrayAdapter.setDropDownViewTheme(mActivity.getTheme());
希望这有助于某人;)
答案 2 :(得分:0)
您可以在不更改任何样式的情况下访问代码中的内部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的内容。
您无需更改样式或修改任何XML。只需在代码中执行此操作,即使在事件方法中,也应该没问题。