【问题标题】:How can I disable Spinner in Android and enable it on button click?如何在 Android 中禁用 Spinner 并在单击按钮时启用它?
【发布时间】:2018-09-10 17:05:56
【问题描述】:

我想禁用我的整个表单,包括 edittext 和 spinner,并希望在用户单击编辑表单按钮时启用它。

代码:

 <Spinner
                        android:background="@drawable/bg_spinner"
                        android:layout_width="match_parent"
                        android:layout_height="40dp"
                        android:enabled="false"
                        android:layout_marginRight="5dp"
                        android:id="@+id/etgen"
                        android:entries="@array/gender"
                        android:paddingRight="10dp"
                        android:paddingLeft="10dp"
                        android:layout_weight="1"/>

【问题讨论】:

  • 发帖前请先google一下stackoverflow.com/questions/18350566/…
  • 我已经用谷歌搜索并尝试了那里提到的可能的解决方案。@pa
  • 所以发布您尝试过的代码以及您面临的问题。
  • 到目前为止你尝试过什么?您可以发布您的代码 sn-p(s) 吗?
  • @Pavan 我已经编辑了我的问题你可以看到代码..

标签: android


【解决方案1】:

我在这里注意到 SpinnerXML 中我们无法禁用它使用

 android:enabled='false'

目前还不能在 XML 中启用/禁用 Spinner。为此,您必须在代码中完成。

spinner.setEnabled(false);

如果有人知道具体原因,欢迎编辑。

【讨论】:

    【解决方案2】:

    您必须以编程方式禁用它。

    spinner.isEnabled = false
    

    您还可以更改它的颜色以使禁用的外观如下所述。它将以灰色显示微调器。

     spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onNothingSelected(p0: AdapterView<*>?) {
            }
    
            override fun onItemSelected(parent: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
                (parent?.getChildAt(0) as? TextView)?.setTextColor(Color.GRAY)
    
            }
        }
    

    以上代码是用 Kotlin 编写的。如果您发现任何困难,我也可以将其转换为 Java。

    【讨论】:

      【解决方案3】:

      将属性 android:clickable="false"android:focusable="false" 添加到您的 Spinner。

      试试这个:

      <Spinner
          android:background="@drawable/bg_spinner"
          android:layout_width="match_parent"
          android:layout_height="40dp"
          android:enabled="false"
          android:clickable="false"
          android:focusable="false"
          android:layout_marginRight="5dp"
          android:id="@+id/etgen"
          android:entries="@array/gender"
          android:paddingRight="10dp"
          android:paddingLeft="10dp"
          android:layout_weight="1" />
      

      【讨论】:

      • android:enabled="false" 不存在
      【解决方案4】:

      您可以使用 xml 属性 android:enabled="false" 这将禁用特定属性,如果您想禁用表单,则可以在根元素中定义它。

      在按钮上定义 onClick 监听器,然后启用你想要的元素。请分享您的代码,我可以进行相应的修改。

      【讨论】:

      • Pooja .... 请同时使用 android:clickable="false" 和启用属性
      • 找不到 android:enabled 属性
      • 请分享您的代码或代码截图,以便我查看。
      猜你喜欢
      • 2016-07-15
      • 2021-04-02
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多