안드로이드에 커서 위치에 표정을 삽입하는 코드 상세 정보

1471 단어 안드로이드표정
앞말
이전에 쓴 Android 앱은 댓글에 이모티콘을 삽입할 때 버그가 존재하는데 EditText에서 지정한 커서에 이모티콘 문자열을 삽입할 수 없습니다. 매번 추가된 이모티콘 문자열은 문자 끝까지 갑니다.apk 원본을 분석해 보니 이모티콘 디스크의 onClick 응답 이벤트에서 이모티콘 문자열을 정확하게 처리하는 추가 방법이 없습니다. 여기에 EditText 지정 커서에 이모티콘 문자열을 삽입하는 방법을 기록합니다.
EditText 커서에 이모티콘 문자열을 삽입하는 방법
EditText 컨트롤에 이모티콘 문자열을 삽입하려면 먼저 EditText 컨트롤 객체를 가져와야 합니다. 샘플 원본은 다음과 같습니다.

  EditText rEditText = (EditText) findViewById(R.id.r_edittext); 

현재 EditText 컨트롤 객체를 가져옵니다. 다음 단계는 현재 EditText에 있는 문자열을 저장하는 것입니다. 샘플 원본은 다음과 같습니다.

  String oriContent = rEditText.getText().toString(); 

다음은 커서의 위치를 가져오는 것입니다.EditText 컨트롤에서 제공하는 getSelectionStart() 메서드를 사용합니다.그러나 여기서 주의해야 할 것은 EditText에 커서가 없을 때 이 방법을 사용하면 -1로 되돌아간다. 이것은 우리가 원하는 커서 위치가 아니기 때문에 0과 비교하는 것이 가장 좋다. 예시 원본은 다음과 같다.

  int index = Math.max(rEditText.getSelectionStart(), 0); 

나머지는 주어진 커서 위치에 표정 문자열을 삽입한 다음 새로운 커서 위치를 설정하는 것이다.전체 삽입 표정 샘플 원본은 다음과 같습니다.

  private void insertEmotion(String insertEmotion) { 
    String oriContent = rEditText.getText().toString(); 
    int index = Math.max(rEditText.getSelectionStart(), 0); 
    StringBuilder sBuilder = new StringBuilder(oriContent); 
    sBuilder.insert(index, insertEmotion); 
    rEditText.setText(sBuilder.toString()); 
    rEditText.setSelection(index + insertEmotion.length()); 
  } 


좋은 웹페이지 즐겨찾기