2017-11-21 12 views
0

텍스트 암기 연습을위한 앱을 구축 중입니다. 나는 textview를 가지고 있으며 각 단어를 클릭 할 수있게 만들어서 클릭하면 밑줄이 그 단어를 대체하게됩니다. 그런 다음 밑줄을 다시 클릭하면 원래 단어가 복원됩니다. 이 구절 주어진 예를 들어더 많은 클릭을 위해 텍스트를 클릭하고 저장하여 바꿉니다.

: 그리고 송아지와 어린 사자와 살진 함께

"그리고 늑대가 양고기 함께 거하며, 표범이 아이에 누워한다 어린 아이가 그들을 인도 할 것이다. "

'늑대'와 '어린 양'를 클릭하면 리드 : "그리고 ____ (가) ...을 ____ 함께 거하여야한다"는 밑줄에
을 클릭하면 원래 단어를 복원합니다 를 "그리고 늑대어린 양, ...와 함께 있어야합니다. ".

String text = textView.getText().toString(); 
final SpannableString spannableString = new SpannableString(text); 
String regex = "\\S+"; 
Pattern pattern = Pattern.compile(regex); 
final Matcher matcher = pattern.matcher(text); 
while (matcher.find()) { 
    final String word = matcher.group(); 
    final int start = matcher.start(); 
    final int end = matcher.end(); 
    ClickableSpan clickableSpan = new ClickableSpan() { 
     @Override 
     public void onClick(View widget) { 
      try { 
       Editable editable = (Editable) textView.getText(); 
       editable.replace(start, end, "____"); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public void updateDrawState(TextPaint ds) { 
      //Remove default underline associated with spans 
      ds.setUnderlineText(false); 
     } 
    }; 
    spannableString.setSpan(clickableSpan, start, end, 
      Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
} 

답변

-2

글쎄, 당신은 부울 변수를 유지하고 당신의 요구 사항에 따라 업데이트 할 수 있습니다 : 내가 지금까지 할 수 있었던 무엇


는 작업의 첫 번째 절반이다. 또한 다른 함수에서 바꿀 단어의 길이에 따라 대시로 문자열을 만들어야합니다. 그런 다음 기본 setText()를 사용하여 원하는 것을 얻을 수 있습니다.

이 방법이 도움이됩니까?