Introduction: Listening for the Enter Key in an EditText (Android Kotlin)
This code demonstrates how to implement a listener for the Enter key press within an EditText component in an Android application written in Kotlin. Understanding user interaction with soft keyboards is crucial for building a seamless user experience. This example showcases a practical approach for detecting the Enter key press and performing specific actions in response.
Breakdown of the Code:
Setting Up the Activity:
- The
MainActivity
class inherits fromAppCompatActivity
. - In
onCreate
, the layout (activity_main.xml
) is inflated.
- The
Implementing the Enter Key Listener:
- An
OnKeyListener
is assigned to theeditText
. - The
onKey
method is called whenever a key is pressed on the soft keyboard. - Inside
onKey
:- It checks if the event is a key down event (
ACTION_DOWN
) and the pressed key is the Enter key (KEYCODE_ENTER
). - If the conditions are met, specific actions are performed:
- The text entered in the
editText
is displayed along with a message in thetextView
. - The soft keyboard is hidden using the
hideSoftKeyboard
extension function. - Focus is removed from the
editText
, and the cursor is hidden.
- The text entered in the
- It checks if the event is a key down event (
- An
Hiding the Soft Keyboard:
- The
hideSoftKeyboard
extension function retrieves theInputMethodManager
service and hides the soft keyboard from the currently focused window.
- The
Summary:
This code snippet provides a clear approach for detecting the Enter key press in an EditText
and offers a way to customize behavior based on this user interaction. It demonstrates best practices for managing focus and soft keyboard visibility in an Android application. The use of an extension function for hiding the soft keyboard promotes code reusability and maintainability.
package com.example.jetpack
import android.app.Activity
import android.content.Context.INPUT_METHOD_SERVICE
import android.os.Bundle
import android.view.KeyEvent
import android.view.View
import android.view.inputmethod.InputMethodManager
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// edit text enter key listener
editText.setOnKeyListener(object : View.OnKeyListener {
override fun onKey(v: View?, keyCode: Int, event: KeyEvent): Boolean {
// if the event is a key down event on the enter button
if (event.action == KeyEvent.ACTION_DOWN &&
keyCode == KeyEvent.KEYCODE_ENTER
) {
// perform action on key press
textView.text = "Pressed Enter Key\n\n${editText.text}"
// hide soft keyboard programmatically
hideSoftKeyboard()
// clear focus and hide cursor from edit text
editText.clearFocus()
editText.isCursorVisible = false
return true
}
return false
}
})
}
}
// extension function to hide soft keyboard programmatically
fun Activity.hideSoftKeyboard(){
(getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager).apply {
hideSoftInputFromWindow(currentFocus?.windowToken, 0)
}
}
<?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:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#EDEAE0"
tools:context=".MainActivity">
<EditText
android:id="@+id/editText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:inputType="text"
android:singleLine="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.12" />
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:fontFamily="sans-serif-condensed-medium"
android:gravity="center"
android:padding="8dp"
android:textColor="#4F42B5"
android:textSize="25sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText"
tools:text="TextView" />
</androidx.constraintlayout.widget.ConstraintLayout>
- android kotlin - EditText hide keyboard after enter
- android kotlin - EditText hide keyboard click outside
- android kotlin - EditText listener
- android kotlin - EditText TextWatcher
- android kotlin - Get raw resource uri
- android kotlin - Button with icon
- android kotlin - Resize ImageView programmatically
- android kotlin - ImageView circle crop
- android kotlin - Circular ImageView with border
- android kotlin - Circular ImageView programmatically
- android kotlin - ImageView border radius
- android kotlin - ImageView add border programmatically
- android kotlin - ImageView add border
- android kotlin - ImageView set image from drawable
- android kotlin - ImageView set image from url