마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

EditText의 setOnKeyListener 이벤트에서 엔터처리가 아니라 글자수로 처리를 할수 있나요?

0 추천

안드로이드 PDA를 개발중에 있습니다. (M3사의 SM10입니다.)

장비에 스캐너가 따로 달려있어서 QR코드를 스캔하여 사용하고 있습니다.

이 QR코드 스캔 방식이 EditText가 있어야지 가능합니다. 이쪽으로 포지션이 잡히고 스캔을 하면 

EditText에 값이 입력이 되면서 값을 받아오는 형식입니다. 흔히 키보드 엣지 방식이라고 하더군요.

여기서 문제가 있습니다. 

QR코드를 스캔해야하는데 10자리 QR코드면 문제가 없습니다. 그러나 저는 100자리 QR코드를 사용하고 있어서 이 코드를 스캔하면 입력받는데 까지 시간이 오래 걸립니다.(엔터까지 받는 걸로 되어 있어서...)

저는 100자리중 10자리만 사용하면 되는 거라 setOnKeyListener 이벤트에서 엔터 대신 10자리까지 받고 나머지는 입력취소를 할 수 있는 기능을 구현하고 싶습니다.

간단히 요약하자면 100자리 QR코드를 스캔하면 값을 받아오는데 10자리가 되면 그 뒤 나머지는 입력이 취소가 되면서 이벤트종료를 시키고 싶습니다. 

아래 내용은 일반적인 엔터처리 setOnKeyListener 이벤트를 사용한 것입니다.

설명이 난잡한건가 싶긴하지만 도움을 요청드립니다.

//바코드 처리
barcode_Check.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        //Enter key Action

        if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {
            barcodeSave = barcode_Check.getText().toString().replace("\n", "");

            barcode_Check.setText(null);//텍스트박스 지우기

            //자판 감추기
            InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);    //hide keyboard

            Log.v("테스트:", "data : " + barcodeSave);


            return true;
        }
        return false;

    }
});
dpcks6616 (120 포인트) 님이 2018년 9월 18일 질문
에딧텍스트의 길이를 조건문으로 사용하시면될듯합니다

1개의 답변

0 추천

android edittext textwatcher 라는게 있습니다. 이걸 사용하면 글자가 입력/삭제될 때를 알 수 있습니다.

쎄미 (162,410 포인트) 님이 2018년 10월 12일 답변
...