본문 바로가기
안드로이드 코틀린

[Android][Kotlin] 키보드 완료 버튼 누를 때 버튼 클릭되게 하기

by teamnova 2021. 9. 29.

안녕하세요, 이번 포스팅에서는 키보드에서 완료 버튼을 누를 때, 액티비티의 원하는 버튼이 동시에 클릭되게 하는 기능을 만들어보겠습니다.

(코드는 안르도이드 sdk 28 버전 기준으로 작성되었습니다.)

 

포스팅에서 작성된 코드는 스틱코드에서 확인하실 수 있습니다.

[AOS][Kotlin] 키보드 완료 버튼 누를 때 버튼 클릭되게 하기 - Stickode

 

스틱코드

 

stickode.com

 

 

먼저, 레이아웃을 짜보겠습니다.

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/edt_input"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="100dp"
        android:hint="Hello World!"
        android:imeOptions="actionDone"
        android:inputType="text" />

    <Button
        android:id="@+id/btn_done"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="확인" />
</androidx.appcompat.widget.LinearLayoutCompat>

EditText에서 imeOptions와 inputType 속성을 반드시 설정해주어야 합니다.

 

 

액티비티를 만들어보겠습니다.

package com.example.stickode

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.view.inputmethod.EditorInfo
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast

class MainActivity : AppCompatActivity() {
    val edtInput: EditText by lazy { findViewById(R.id.edt_input) }
    val btnDone: Button by lazy { findViewById(R.id.btn_done) }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        edtInput.setOnEditorActionListener(getEditorActionListener(btnDone)) // 키보드에서 done(완료) 클릭 시 , 원하는 뷰 클릭되게 하기
        btnDone.setOnClickListener {
            showToast("확인 버튼이 눌려졌습니다")
        }
    }

    fun getEditorActionListener(view: View): TextView.OnEditorActionListener { // 키보드에서 done(완료) 클릭 시 , 원하는 뷰 클릭되게 하는 메소드
        return TextView.OnEditorActionListener { textView, actionId, keyEvent ->
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                view.callOnClick()
            }
            false
        }
    }

    fun showToast(message: String) {
        Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show()
    }
}

 

키보드에서 완료 버튼을 눌렀을 때, Button을 클릭할 수 있게 하였습니다.

Button을 클릭하면 토스트 메세지가 나옵니다.

 

 

 

완성된 모습입니다.