4

我想删除单击 Spinner 时出现的蓝色(我正在使用 Holo 测试我的应用程序)。

我的代码:

    ArrayAdapter<String> array_adapter = new ArrayAdapter<String> (getActivity(), 
            R.layout.spinner_item, string_array);
    array_adapter.setDropDownViewResource(R.layout.spinner_item);

    Spinner spinner = (Spinner) getView().findViewById(R.id.spinner);
    spinner.setAdapter(array_adapter);

spinner_item.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/spinner_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAllCaps="true"
    android:background="@drawable/item"
    style="@style/EquidiaTheme.MySpinner" />

和 item.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@android:color/transparent" />
    <item android:state_selected="true" android:drawable="@android:color/transparent" />
    <item android:drawable="@android:color/transparent" />
</selector>

这行不通。任何想法?

4

3 回答 3

0

定制android:spinnerDropDownItemStyle

样式化操作栏下拉菜单

于 2013-03-05T16:34:27.330 回答
0

当我这样做时,当我选择它时,我能够摆脱项目上的蓝色矩形:首先我声明我想在 values.xml 中使用的颜色:

<resources>
   <drawable name="red_color">#ff0000</drawable>
   <drawable name="blue_color">#0000ff</drawable>
   <drawable name="green_color">#00ff00</drawable>
   <drawable name="transparent_color">#00000000</drawable>
</resources>

比我在 Styles.xml 中定义自定义样式

<resources>
    <style name="Theme.Spinner" parent="android:Theme.Holo">
        <item name="android:attr/listChoiceBackgroundIndicator">@drawable/transparent_color</item>
   </style>
</resources>

在样式中,我只能使用资源中定义的颜色(直接在样式中设置颜色,例如:@android:color/XXX 或 #XXX 不起作用)

毕竟我在活动中应用它们。我使用 Xamarin,所以代码可能是:

[Activity( Label = "TestLayouts", MainLauncher = true, Icon = "@drawable/icon", Theme="@style/Theme.Spinner")]

但对于 android 它应该是: <activity android:theme="@style/Theme.Spinner">

我将此答案用作参考:可 点击视图中的默认选择器背景

还要摆脱微调器本身的蓝色矩形,请使用:

 <Spinner 
   android:background="@null"

您需要同时使用两者来完全删除蓝色矩形。也可能这种风格属性可以帮助你:

    <item name="android:attr/colorPressedHighlight">#FF0000</item>
    <item name="android:attr/colorLongPressedHighlight">#FF0000</item>
    <item name="android:attr/listChoiceIndicatorSingle">@drawable/red_color</item>
于 2014-11-13T10:24:04.880 回答
0

没有主题的解决方案。如果您只有几个微调器,则非常理想。

创建一个带有状态的可绘制(xml)(https://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

对状态 PRESSED 和 NORMAL 使用相同的图像

然后将其用作背景:

mySpinner.setBackgroundResource(R.drawable.my_spinner_state_drawable)

额外提示:

  • 您可以使用系统资源中的系统可绘制(图像):例如“@android:drawable/btn_dropdown_normal”。它更易于维护并提供更原生的外观和感觉。
  • 参考http://androiddrawables.com/Buttons.html
于 2017-11-09T16:09:00.630 回答