【问题标题】:Spinner view; selector not working微调器视图;选择器不工作
【发布时间】:2014-02-28 11:26:09
【问题描述】:

微调器 xml:

<Spinner
        android:id="@+id/sort_by_spinner"
        android:layout_marginLeft="40dip"
        android:layout_marginRight="40dip"
        android:layout_marginBottom="10dip"
        android:paddingLeft="6dip"
        android:paddingRight="6dip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/title_bar"
        android:drawSelectorOnTop="true"
        android:dropDownSelector="@drawable/spinner_selector"
    />

我尝试过使用android:background=... 购买自己,使用dropDownSelector,使用和不使用listSelector=...;,使用和不使用listItemDropDownSelector=...,以及使用drawSelectorOnTop 的所有排列

微调器选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="@color/app_tint"/>
        </shape>
    </item>
    <item 
        android:state_selected="true">
        <shape android:shape="rectangle">
            <solid android:color="@color/app_tint"/>
        </shape>
    </item>
</selector>

我总是得到默认的橙色。我已经阅读了很多关于此的帖子;只是不能让它发生。我必须支持 v10 及更高版本。缺少什么?

【问题讨论】:

  • android:dropDownSelector="@drawable/spinner_selector 我不认为它适合你..请访问stephenpengilley.blogspot.in/2013/01/…你会知道如何做到这一点
  • 相同的选择器在其他地方工作没问题,所以我不认为就是这样。我认为与我在 Spinner 本身上设置的属性有关。我想,无论如何。我也尝试了@flx 答案;也不行

标签: android android-spinner


【解决方案1】:

试一试:

<Spinner         
    android:id="@+id/sort_by_spinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="@dimen/space"
    android:background="@drawable/selection_normal"
    android:dropDownSelector="@drawable/list_item_selector"
    android:spinnerMode="dropdown" />

和 list_item_selector 一样

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_selected="true" android:drawable="@color/app_tint"></item>
    <item android:state_pressed="true" android:drawable="@color/app_tint"></item>
    <item android:drawable="@color/white"></item>
</selector>

selection_normal 是微调器的任何图像,如果不需要,您可以忽略它。

[编辑]

为了设置突出显示被触摸/点击的项目的列表行,请执行以下操作:

在微调器适配器的getDropDownView 方法中,而不是getView 方法中使用代码设置选择器:

view.setBackgroundResource(R.drawable.list_item_selector)

或使用视图的setBackground 方法。

【讨论】:

  • 你是说我可以忽略背景属性吗?或者,只需为其分配任何可绘制对象?
  • 你可以分配和绘制它:)
  • 影响微调器的选定状态,并且确实有效,但我正在寻找其中列表项的选定状态。也许这就是我的问题......
  • 然后您可以维护所选项目或所选项目的列表,并在微调器适配器中的 getDropDownView 而不是 getView 方法中设置选择器。
  • 让我澄清一下,只是为了确保我正在解释我要正确完成的工作。我只需要该行在触摸/单击时突出显示不同的颜色。该列表仅是单选;我不需要维护实际的选择状态;很抱歉造成混乱
【解决方案2】:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"   
  android:drawable="@drawable/audio_selector"/>    
 <item android:drawable="@drawable/launcher" />
</selector>

易于使用的选择器将此文件放在可绘制文件夹中,您在可绘制文件夹中也有图像

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多