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

버튼을 누르면 EditText 중간에 문자입력하는 방법

0 추천

안녕하세요

제가 지금 만들어보고 싶은 것은 해시태그처럼 기능을 구현을 해보는 것입니다.

이미지버튼인 '#'을 누르면 내용에 #이 입력이 되어야 하는데 어떤 방법을 써야하는지 감을 잡기 어렵습니다.

처음 코드를 짤 때에는 EditText.setText(contents + "#"); 이런 식으로 코드를 작성했는데

이렇게 작성을 하면 #이 당연하게도 글 중간에는 입력이 되지 않았습니다.

구글링을 계속해보면서 TextWatcher를 사용하라는 말을 많이 보았는데 실은 그 부분에서도 감이 잡히지 않습니다.

 

현재 이런식으로 작성이 되어있고요

 //해시태그
    public void hashtag_write(View v) {
        ImageButton tagbtn = (ImageButton) findViewById(R.id.hashtag_write);

        tagbtn.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View v) {

                String str = "#";

                final EditText write = (EditText) findViewById(R.id.write);
                String contents = write.getText().toString();

                //int s = write.getSelectionStart();
                //int e = write.getSelectionEnd();

                //write.setText(contents + str);

                write.addTextChangedListener(new TextWatcher() {
                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                    }

                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {

                        int st_point = write.getSelectionStart();
                        int ed_point = write.getSelectionEnd();

                    }

                    @Override
                    public void afterTextChanged(Editable s) {

                    }
                });


                Editable etext = write.getText();
                Selection.setSelection(etext, etext.length());

            }
        });
    }

 

역시 TextWatcher을 사용하는 것이 맞는지 아님 제가 너무 복잡하게 생각하고 있는지 제가 놓치고 있는 것이 무엇인지 일깨워주시면 감사하겠습니다

엉와 (290 포인트) 님이 2016년 7월 6일 질문

1개의 답변

+1 추천
 
채택된 답변
글 중간이라고 하면 어디에 넣고 싶은지를 생각하고 계시지 않나요?

그게 어떤 스트링의 전이라면 S = EditText.getText.toString에서 그 스트링의 인덱스 x를 찾으신 다음에

S.substring(0,x-1)+"#"+S.substring(x,S.length)이런 식으로 짜시면 되죠

스트링이 아니라 커서의 위치에 넣고싶으신거면 EditText.getSelection하시면 커서 위치를 받을 수 있습니다
초보개발자z (1,480 포인트) 님이 2016년 7월 6일 답변
엉와님이 2016년 7월 7일 채택됨
정말 감사합니다! 말씀하신대로 했더니 예쁜 모양으로 나왔어요!
...