2017-03-17 6 views
0

다음과 같은 문제가 있습니다 :TextView에서 두 번째로 발견 된 단어로 이동하는 방법 | ANDROID

아래 코드는 편집 텍스트에 입력 된 TextView에서 처음 발견 된 단어를 검색하고 표시하고 이동하는 방법입니다.

검색 버튼을 다시 입력 할 때 두 번째로 찾은 단어로 이동하는 방법을 알고 있고 표시하는 방법을 알고 계십니까?

String textToFind = Etxt.getText().toString().trim().toLowerCase(); 
String fullTxt = textView.getText().toString(); 

SpannableString spannable = new SpannableString(fullTxt); 

final int index = fullTxt.indexOf(textToFind); 
if(index == -1) { 
    // text does not contain the word 
    Toast.makeText(getApplicationContext(), "Text '" + textToFind + "' not found.", Toast.LENGTH_SHORT).show(); 

} 
else { 
    int lineNum = textView.getLayout().getLineForOffset(index); 
    int lineStart = textView.getLayout().getLineEnd(lineNum -1); 
    int lineEnd = textView.getLayout().getLineEnd(lineNum); 
    // set style to the entire line, as your origional code 
    spannable.setSpan(new ForegroundColorSpan(Color.parseColor("#035525")), lineStart, lineEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
    spannable.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), lineStart, lineEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 

    textView.setText(spannable); 
    textView.post(new Runnable() { 
     @Override 
     public void run() { 
      int line = textView.getLayout().getLineForOffset(index); 
      int y = textView.getLayout().getLineTop(line); 
      scrollView.scrollTo(0, y); 
     } 
    }); 
} 

감사합니다.

답변

0

당신이 지금 가지고있는 비슷한 방법을 사용하여 잠재적 인 해결책을 생각해보십시오. 문자열의 길이와 시작 및 끝 위치를 알고있는 경우 찾은 마지막 단어의 끝 위치에서 분할을 유지하는 전체 텍스트 사본을 가질 수 있습니다. 이렇게하면 나머지 문자열에서 indexof를 계속 수행하고 끝날 때까지 계속 이동할 수 있습니다.

또는 다른 방법으로 문자 배열을 찾아서 발견 된 문자 순서를 찾으려고합니다. 예 :

for int i = 0; i < fulltext.length; i++; { 
    if fulltext[i] == textToFind[0] && fulltext[i+1] == textToFind[1] ....{ 
    } 
} 
+0

감사합니다. 나는 이것을 나중에 시험해 본다 :) – android