如何禁用Spinner的"禁用"状态?

Mis*_*ary 28 android spinner android-spinner

当我禁用我的Spinner时,它看起来几乎与被禁用之前一样,即

之前

在此输入图像描述

在此输入图像描述

它是禁用的,所以在功能上一切都很好,但我希望它看起来是禁用的.这个问题似乎已被问到陷阱(这里这里),但是最接近答案的是这个,看起来不完整,我还不明白?!?

Romain说要在Froyo开始修复,但我正在使用Honeycomb,正如你从屏幕截图中看到的那样,它似乎不起作用.任何意见,将不胜感激.

Ban*_*eid 43

不知道你是否仍然需要这个,但有一种方法.我自己一直在努力解决这个问题.我最终做了这样的事情:

((Spinner) spinner).getSelectedView().setEnabled(false);
spinner.setEnabled(false);
Run Code Online (Sandbox Code Playgroud)

这实际上是禁用微调器和显示的选定项目.很可能所选项目是TextView,它应该显示为禁用的TextView.

我正在使用它,它的工作原理.但由于某些原因我不知道它并不像其他残疾观点那样"灰暗".它看起来仍然是残疾人.试试看.

  • 这对我不起作用,getSelectedView()在调用spinner.setSelection()之后返回null (7认同)
  • 有一个Spinner属性似乎做同样的事现在称为disableChildrenWhenDisabled https://developer.android.com/reference/android/support/v7/mediarouter/R.attr.html#disableChildrenWhenDisabled (2认同)

rym*_*ymo 6

如果您要创建具有自定义布局(即扩展R.layout.simple_spinner_item)的适配器,请将此属性添加到 XML:android:duplicateParentState="true"


Pau*_*ntz 6

使旋转器看起来失效的一种聪明方法是降低透明度.

Spinner spinner = (Spinner) findViewById(R.id.my_spinner);
spinner.setEnabled(false);
spinner.setAlpha(0.5f);
Run Code Online (Sandbox Code Playgroud)