如何在Android中禁用Spinner并在按钮点击时启用它?

5
我希望禁用整个表单,包括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"/>

3
请在发布问题之前先进行一些谷歌搜索。http://stackoverflow.com/questions/18350566/edittext-and-spinner-enable-on-a-button-click - Pavan
我已经谷歌搜索并尝试了那里提到的可能解决方案。@pa - Pooja Pachchigar
@Pavan,我已经编辑了我的问题,你可以看到代码。 - Pooja Pachchigar
@mridula 我已经附上了我的代码。 - Pooja Pachchigar
这是默认禁用的,请展示您尝试启用它的Java代码。 - Pavan
显示剩余5条评论
4个回答

12

在这里我注意到关于Spinner的问题是,在XML中我们无法使用disable来禁用它。

 android:enabled='false'

目前还不能通过XML方式启用/禁用Spinner。您需要在代码中进行设置。

spinner.setEnabled(false);

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


7

您需要通过编程来禁用它。

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

在您的Spinner中添加属性 android:clickable="false"android:focusable="false"

尝试这样做:

<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" 不存在。 - Prajwal Waingankar

0
你可以使用XML属性android:enabled="false"来禁用特定的属性,如果你想禁用整个表单,可以在根元素中定义。在按钮上定义onClick监听器,然后启用你想要的元素。请分享你的代码,我可以相应地修改。

Pooja,请同时使用android:clickable="false"和enabled属性。 - Summved Jain
找不到android:enabled属性。 - debo.stackoverflow
请分享您的代码或代码截图,以便我可以查看。 - Summved Jain

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