2

在 4.x 设备中,指示这是一个微调器并且应该被单击的可绘制对象几乎不可见;它正在使用 spinner_ab_default_holo_light.9.png。我怎样才能让它使用 spinner_ab_default_holo_dark.9.png 或我选择的任何其他可绘制对象?

看不到微调器指示器

微调器位于对话框中。该应用程序使用 ActionbarSherlock 4.3.1 以实现 Android 2.2.3 向上兼容性。该应用程序实现了Android 操作栏样式生成器以创建 Sherlock.Light.DarkActionBar 主题。我正在使用 Values 和 Values-v14 来管理样式。此对话框附加特定样式:

new AlertDialog.Builder(new ContextThemeWrapper(getActivity(), R.style.FibroDialog))

在 Values-v14 中,它有一个父主题来确保对话框背景是暗的:

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

</style>

我尝试过的事情:

在 Android Action Bar Style Generator 生成的主题中,我添加了

<item name="android:spinnerItemStyle">@style/MySpinnerItemStyle</item>

然后添加

<style name="MySpinnerItemStyle" parent="android:TextAppearance.Holo.Widget.TextView.SpinnerItem">
    <item name="android:textColor">#FFF</item>
    <item name="android:background">@drawable/spinner_background_ab_fibromapp</item>
</style>

这导致我实际上想成为该项目的背景的drawable,而不是微调器。

在此处输入图像描述

在微调器的 xml 中,我尝试了

android:dropDownSelector="@drawable/spinner_ab_default_fibromapp"

给出与上述相同的结果,并且

android:popupBackground="@drawable/spinner_ab_default_fibromapp"

它将每个微调器项目的背景替换为可绘制对象。

作为最后的手段,我制作了自己的 spinner_ab_default_holo_dark 和 spinner_ab_default_holo_light 9-patches;他们根本没有出现。

如何访问该微调器绘制对象并将其更改为我想要的任何图形?

4

1 回答 1

1

尽管我对此很陌生,但我也花了太多时间寻找类似的答案。似乎唯一的解决方案是创建一个与系统微调器样式完全相同的样式,然后编辑您要更改的样式。这很麻烦,很无聊而且不太实用,但是如果必须这样做,就必须这样做......由于时间限制,我最终改变了我的布局,以便标准微调器看起来不会太糟糕。

于 2013-12-23T04:20:12.897 回答