2

我正在创建一个带有自定义视图的微调器,无论如何我设法在微调器处于非活动状态以及按下它时显示不同的可绘制对象,我想在下拉列表显示时保持按下状态可绘制。这是 mi XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_focused="true"
      android:state_pressed="false"
      android:drawable="@drawable/ComboBoxInactive" />
  <item android:state_focused="true"
      android:state_pressed="true"
      android:drawable="@drawable/ComboBoxActive" />
  <item android:state_focused="false"
      android:state_pressed="true"
  android:drawable="@drawable/ComboBoxActive" />
  <item android:drawable="@drawable/ComboBoxInactive" />
</selector>

显示下拉列表时我应该添加什么状态?我希望它显示 ComboBoxActive 可绘制对象。我已经尝试添加这个:

  <item android:state_enabled ="false"
        android:drawable="@drawable/ComboBoxActive"/>

知道状态是什么吗?

4

2 回答 2

7

没有 android:state_dropdown_showing 状态。微调器下拉列表中的唯一一个状态是 state_enabled="true"

您可以使用我的选择器来区分下拉列表状态

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- disabled state -->
<item android:state_enabled="false" android:drawable="@drawable/spinner_off"/>
<!-- pressed state -->
<item android:state_enabled="true" android:state_window_focused="true" android:state_pressed="true" android:drawable="@drawable/spinner_pressed"/>
<!-- unselected state -->
<item android:state_enabled="true" android:state_window_focused="true" android:drawable="@drawable/spinner_default"/>
<!-- dropdown list state -->
<item android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/spinner_dropdown_list_is_shown"/>
<!-- default -->
<item android:drawable="@drawable/spinner_default"/>
</selector>

不要忘记在微调器上设置 setFocusable 和 setFocusableInTouchMode 属性。

于 2013-06-05T08:11:24.010 回答
3

根据 Olef Koshkin 的回答,我可以补充一点,如果您想在单击微调器后保存更改的状态,并仅在关闭微调器后将其恢复为默认值,您可以使用。这个对我有用。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- disabled state -->
    <item android:drawable="@drawable/custom_spinner_inactive"
          android:state_enabled="false"/>
    <!-- pressed state -->
    <item android:drawable="@drawable/custom_spinner_inactive"
          android:state_enabled="true"
          android:state_pressed="true"
          android:state_window_focused="true"/>
    <!-- unselected state -->
    <item android:drawable="@drawable/custom_spinner_inactive"
          android:state_enabled="true"
          android:state_window_focused="true"/>
    <!-- dropdown list state -->
    <item android:drawable="@drawable/custom_spinner_inactive"
          android:state_enabled="true"
          android:state_focused="true"/>
    <!-- default -->
    <item android:drawable="@drawable/custom_spinner_active"/>
</selector>

在其他情况下,我看到默认状态闪烁,我不喜欢它。

于 2017-08-22T07:16:43.700 回答