2010-01-29 14 views
6

복사/붙여 넣기 기능을 구현하려고합니다. EditText에서 텍스트를 어떻게 선택합니까?Android - EditText에서 텍스트 선택 받기

EditText et=(EditText)findViewById(R.id.title); 

blabla는 버튼 OnClickListener를 :

int startSelection=et.getSelectionStart(); 
int endSelection=et.getSelectionEnd(); 

가 그럼 난 붙어있어. 어떤 아이디어?

답변

12

당신은 이미 선택한 영역이 무엇인지 찾아 냄으로써 어려운 부분을 처리 한 것처럼 보입니다. 이제 전체 텍스트에서 해당 하위 문자열을 가져와야합니다.

이 시도 :

String selectedText = et.getText().substring(startSelection, endSelection); 

그것은 단지 기본 Java String 작업입니다.

+5

안드로이드와 사소한 불만은 getSelectionStart()와 getSelectionEnd()가 아무튼 물건 선택한 순서를 의미한다는 것입니다 꼭 필요한 시작으로 끝나야합니다. (끝내지는 않겠지 만 여기에 몇 가지 OutOfBounds를 저장하는 것이 좋을 것입니다.) – andy

+0

얘들 아, 내 대답과 비슷하지만 getselectionStart() 및 getSelectionEnd() 메서드 문제가있다. 둘 다 같은 값을 반환합니다. – FpontoDesenv

+0

et.getText()는 수정 가능 항목을 반환합니다. substring()은 문자열을 반환합니다. toString()을 추가해야합니다. 그것은 - et.getText(). toString(). substring (start, end)입니다. – earlcasper

0

당신은 편집 가능한 개체에서 특별한 기능을 사용해야합니다

Editable txt = et.getText(); 
txt.replace(int st, int en, CharSequence source) 

이 명령은 문자열 (CharSequence를)와 (st..en)로 지정된 부분을 대체합니다.

0

이 모든 작업을 수행 할 필요는 없습니다. 편집 텍스트를 길게 누르면 복사/붙여 넣기/선택 등의 관련 옵션이 모두 표시됩니다. 텍스트를 저장하려면 mbaird가 표시하는 방법을 사용하십시오.

0

문자열 selectedText = et.getText(). toString(). 하위 문자열 (startSelection, endSelection);
getText()는 편집 가능한 것을 반환합니다. 하위 문자열에는 String이 필요합니다. toString()은 그것들을 올바르게 연결합니다.

0

당신은 그것을 EditText에서 선택한 텍스트를 얻을 수있는이 방법을 수행 할 수 있습니다

EditText editText = (EditText) findViewById(R.id.editText3); 
int min = 0; 
int max = editText.getText().length(); 
if (editText.isFocused()) { 
    final int selStart = editText.getSelectionStart(); 
    final int selEnd = editText.getSelectionEnd(); 
    min = Math.max(0, Math.min(selStart, selEnd)); 
    max = Math.max(0, Math.max(selStart, selEnd)); 
} 
// here is your selected text 
final CharSequence selectedText = editText.getText().subSequence(min, max); 
String text = selectedText.toString(); 
관련 문제