안드로이드 개발 질문/답변
(글 수 45,052)
textview에서 단어들을 출력하고 난 뒤에 사용자가 터치한 부분에 해당하는 단어를 받아올 수 있을까요ㅠㅠ
textview를 터치했을 때 textview에서 좌표값을 받아오는 방법은 검색을 통해서 알아봤는데
string을 받아오는 방법을 도저히 못 찾겠어요 ㅠㅠ
OnGestureListener mTouchListener = new OnGestureListener() {
public boolean onDown(MotionEvent event) {
return false;
}
public void onShowPress(MotionEvent event){
int offset = getIndex(syncView,event);
}
}
이렇게 이벤트 리스너에서 getIndex를 호출해서 offset값에 저장을 해둿습니다.
getIndex는
public int getIndex(TextView view, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
x -= view.getTotalPaddingLeft();
y -= view.getTotalPaddingTop();
x += view.getScrollX();
y += view.getScrollY();
Layout layout = view.getLayout();
int line = layout.getLineForVertical(y);
int offset = layout.getOffsetForHorizontal(line, x);
Toast.makeText(this, "line:" + line + ",index:" + offset, 1).show();
return offset;
}이렇게 구현했습니다.
여기에 좌표값에 있는 문자를 받아오는 방법을 도저히 못찾겠네요 ㅠㅠ
도와주세요 ㅠㅠ
아! 첫 질문이고 공지확인 헀습니다 ~:)
2011.09.29 09:32:39
빠른 답변 감사해요! ^-^
한쪽 방향으로만 생각이 치우쳐서 이틀간 멍청했었요 ㅠㅠ;;;;
심지어...getText()만 해놓고...toString()안해놓고 안된다고 찡찡 댔어요 ㅋㅋㅋㅋ
혹----------시나 저같은 경우의 분들을 위해서~
전 함수하나 만들어서 이렇게 처리했답니다:)
public String chooseWord(int offset){
String strWord="";
for(int i=offset-1;;i--){ //선택한 글자(알파벳하나)가 포함된 단어의 앞부분 받아오기
String a=String.valueOf(syncView.getText().charAt(i));
if(!a.equals(" ")&&!a.equals(",") &&!a.equals("]")&&!a.equals(")")&&!a.equals("`")&&!a.equals("?")&&!a.equals(".")&&!a.equals("/")&&!a.equals(";")&&!a.equals(":")){
strWord=a+strWord;
// Log.d("offset","offset "+offset);
// Log.d("offset","word "+strWord);
}
else
break;
}
for(int i=offset;;i++){ //선택한 글자(알파벳하나)가 포함된 단어의 뒷부분 받아오기
String a=String.valueOf(syncView.getText().charAt(i));
if(!a.equals(" ")&&!a.equals(",") &&!a.equals("]")&&!a.equals(")")&&!a.equals("`")&&!a.equals("?")&&!a.equals(".")&&!a.equals("/")&&!a.equals(";")&&!a.equals(":")){
strWord=strWord+a;
// Log.d("offset","offset "+offset);
// Log.d("offset","word "+strWord);
}
else
break;
}
return strWord;
}요래요래 해서 터치이벤트에서 chooseWord만 불러주면 되게 했어요 :)




offset이 제대로된 index가 맞다면 텍스트 뷰에서 getText 로 내용 가져와서 subString 으로 가져오면 되지 않나요 ㅎㅎ
textview.getText().toString().subString(offset, offset+1);