You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何通过代码控制EditText的可见性(按钮触发)

实现EditText的显示/隐藏控制

第一步:修正XML初始可见性

你提到原本想把EditText设为不可见,当前XML里android:visibility="visible"是笔误,改成以下两种值之一即可:

  • android:visibility="gone":控件完全隐藏,不占用布局空间
  • android:visibility="invisible":控件隐藏,但仍保留原布局空间

修正后的EditText XML代码:

<EditText
    android:id="@+id/edittext_username"
    android:layout_width="328dp"
    android:layout_height="52dp"
    android:layout_marginStart="32dp"
    android:layout_marginEnd="32dp"
    android:background="#F6F2F2"
    android:backgroundTint="#F6F5F5"
    android:ems="15"
    android:hint="@string/Client_Id"
    android:importantForAutofill="no"
    android:inputType="text"
    android:textAlignment="center"
    android:textColor="#070707"
    android:textColorHint="#0B0A0A"
    <!-- 改为初始隐藏状态 -->
    android:visibility="gone"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:ignore="TextFields" />

第二步:按钮点击事件处理

1. 点击按钮让EditText变为可见

在按钮的点击回调中,获取EditText实例并设置其可见性为View.VISIBLE:

// 建议在Activity/Fragment的onCreate中初始化EditText,避免重复查找
val editTextUsername = findViewById<EditText>(R.id.edittext_username)

findViewById<Button>(R.id.button).setOnClickListener {
    // 设置为可见状态
    editTextUsername.visibility = View.VISIBLE
}

2. 点击按钮让EditText变为不可见

同样在点击回调中,根据布局需求选择View.GONE或View.INVISIBLE:

findViewById<Button>(R.id.button).setOnClickListener {
    // 完全隐藏,不占用布局空间
    editTextUsername.visibility = View.GONE
    // 或者仅隐藏但保留空间:editTextUsername.visibility = View.INVISIBLE
}

额外:实现点击按钮切换显示/隐藏

如果需要点击按钮在显示和隐藏状态间切换,可以这么写:

findViewById<Button>(R.id.button).setOnClickListener {
    editTextUsername.visibility = if (editTextUsername.visibility == View.VISIBLE) {
        View.GONE
    } else {
        View.VISIBLE
    }
}

内容的提问来源于stack exchange,提问作者user1114881

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:01:16