안드로이드 코틀린

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

teamnova 2021. 9. 29. 12:00
728x90

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

(코드는 안르도이드 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을 클릭하면 토스트 메세지가 나옵니다.

 

 

 

완성된 모습입니다.