Backend/Java

[안드로이드] 키보드 리스너 정의

비비빅B 2020. 5. 20. 17:42

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Search"
        android:inputType="text"
        android:imeOptions="actionSend"
        android:id="@+id/search" />
</LinearLayout>
  • 먼저 키보드 타입 속성을 지정하는 inputType 지정
  • EditText 위젯에 imeOptions 키보드 작업 속성 지정
  • actionSend로 넣어주면 보내기 버튼이 생김

imeOptions 속성 없을 때 / imeOptions = "actionSend"


Mainactivity.java

public class MainActivity extends AppCompatActivity {
    EditText search;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  // 렌더링할 content 지정

        search = (EditText) findViewById(R.id.search);
        search.setOnEditorActionListener(           // 글자 입력 폼 가동 이벤트를 대기하는 리스너
                new TextView.OnEditorActionListener() {         // TextView 리스너 인스턴스
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            	boolean handled = false;
                if(actionId == EditorInfo.IME_ACTION_SEND) {    // 리스너에서 만든 actionId와 xml imeOptions 값을 비교, 즉 send 가 동작된 게 맞다면
                    Toast.makeText(MainActivity.this, search.getText().toString(), Toast.LENGTH_SHORT).show();
                	handled = true;
                }
                return handled;
            }
        });

    }

    public void onClick(View v) {
        Toast.makeText(getApplicationContext(), "버튼이 눌러졌습니다.", Toast.LENGTH_SHORT).show();
    }
  • 이벤트를 듣기 위해 에디터액션 리스너를 정의
  • XML에서 넘어온 actionId라는 변수와 실제로 수행된 EditorInfo클래스 안의 SEND 동작과 비교함
  • 자바스크립트 keycode와 비슷한 듯함

'Backend > Java' 카테고리의 다른 글

Repository와 DAO 차이?  (0) 2021.01.14
[Spring Boot] 유효성 검사  (0) 2020.12.16
[JSP] 쿼리문 실행 오류  (0) 2020.07.09
[JSP] 한글 인코딩  (0) 2020.05.28
[안드로이드/자바] 익명 내부 클래스 변수 범위(final)  (0) 2020.05.19