如何禁用 EditText

Posted

技术标签:

【中文标题】如何禁用 EditText【英文标题】:How to disable a EditText 【发布时间】:2018-12-07 16:14:24 【问题描述】:

我怎样才能在写完东西后禁用 EditText,使其保持该值并且不能被修改。因为我用一个按钮做了一个 EditText,当我点击按钮时 EditText 得到了日期使用日期选择器,但我希望在此 EditText 中不能写入

【问题讨论】:

Try googling before asking on Stack overflow. There are answers out there 【参考方案1】:

您可以通过编程方式禁用 edittext(在 java/kt 文件中)。 您可以在 kotlin 中使用以下代码。

edittext.text = "your text" //sets text in edittext
edittext.enabled = false  //disables edittext field

【讨论】:

【参考方案2】:

始终禁用 EditText。

edittext.isEnabled = false

当点击按钮时,将 EditText 的值设置为所需的日期字符串。

edittext.text = "DD/MM/YYYY"

这样 EditText 将不可写,但您可以使用按钮设置值。

【讨论】:

【参考方案3】:

添加属性 android:inputType="date" 和 android:onClick="your_function" 以将您的 edittext 上的点击绑定到一个函数

这是一个活动 MainActivity.kt 的示例:

class MainActivity : Activity() 
        lateinit var editTextDate: EditText;

        override fun onCreate(savedInstanceState: Bundle?) 
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)

            editTextDate = findViewById(R.id.edittext_date);
        

        fun openPickerDate(view : View) 
            val c = Calendar.getInstance()
            val year = c.get(Calendar.YEAR)
            val month = c.get(Calendar.MONTH)
            val day = c.get(Calendar.DAY_OF_MONTH)

            val dpd = DatePickerDialog(this, DatePickerDialog.OnDateSetListener  view, year, monthOfYear, dayOfMonth ->
                editTextDate.setText("" + dayOfMonth + "/" + monthOfYear + "/" + year)
            , year, month, day)
            dpd.show()
        
    

这里是布局activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/edittext_date"
        android:layout_
        android:layout_
        android:text="01/01/2018"
        android:inputType="date"
        android:onClick="openPickerDate"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

【讨论】:

以上是关于如何禁用 EditText的主要内容,如果未能解决你的问题,请参考以下文章

如何在editText.setText()中插入一个字符串

如何通过单击按钮移除所有编辑文本的焦点?

如何让另外两个或两个以上数字的单一的EditText?

当TextWatcher存在时退格/删除时按EditText光标位置

GridView+PopupWindow自定义数字键盘

Linux的透明大页如何启用禁用