在安卓系统中禁用Spinner

77
我在使用android:enabled="false"时遇到了问题,它不能禁用组件,尤其是当它是一个spinner的情况下。不知道是否相关,但这个组件属于一个viewflipper的布局。

有什么提示或解决方法吗?

谢谢

5个回答

119

在设置适配器之前禁用或启用它。

yourSpinner.setEnabled(false);   
yourSpinner.setClickable(false);  
yourSpinner.setAdapter(typeAdapter);

3
我认为在至少API 24上,包括 setClickable 不是必需的。有没有人发现在其他版本的Android上是必需的呢? - Jon
1
更重要的是,截至今天,旋转器完全不尊重可点击属性,无论它是在XML中设置还是在代码中设置。 - Zonker.in.Geneva
2
这与设置适配器无关,您可以在之前或之后进行,没有关系,你为什么要提到它呢? - user924
@user924 是的,这很重要,在设置适配器后它不起作用。 - Christian

31

目前还无法在XML中启用/禁用Spinner,必须在代码中进行操作。

以下是示例:

Spinner spinner = (Spinner) findViewById(R.id.mySpinner);
spinner.setEnabled(false);

20
你可以在 xml 中设置 android:clickable="false" 来禁用 spinner 的点击 event

禁用使用setEnabled(boolean)比在XML中设置更灵活。 - Erick
2
@Erick 我不同意你的观点,这取决于使用情况。 - Mehdi Dehghani
3
存在一个 Android bug,它不会尊重下拉菜单的 clickable 设置。 - Zonker.in.Geneva
已在 Android 11 上测试,但无法正常工作。 - صلي علي محمد - Atef Farouk
这也不起作用,你需要将它放入类中并设置 enable = true 或 false。 - Mohamed Mohamed Taha

12

您可以在Java代码中设置这个,而不是在XML中设置,因为Spinner应该从View 实现setEnabled(boolean)


会尝试一下。在将其设置在 XML 中时是否有已知的错误? - xain
4
与大多数旋转器一起使用,但其中一些仍保持启用状态。 - xain

-1
Spinner spinner = (Spinner) findViewById(R.id.mySpinner);
spinner.setEnabled(false);

无法工作

实际可行的代码...

Spinner spinner = (Spinner) findViewById(R.id.mySpinner);
spinner.setEnabled = false;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接