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
相关产品推荐
相关产品推荐

