2012-07-17 2 views
3

정보를 사용자에게 표시하는 데 사용하는 EditText보기가 있습니다. 나는 문자열을 추가 할 수이고 다음과 같은 방법으로 올바르게 작동 :서식있는 텍스트를 EditText보기에 추가하십시오.

 public void PrintToUser(String text){ 
     MAIN_DISPLAY.append("\n"+text); 
     } 

응용 프로그램은 사용자가 내가 RED의 문자열을 표시하고자하는 싸움을 할 때, 전투가있는 RPG 게임이다. 그래서 SpannableString을 사용하려고 시도했습니다. (방법 변경)

 public void PrintToUser(String text, int Colour){ 

     if(Colour == 0){ 
     //Normal(Black) Text is appended 
     MAIN_DISPLAY.append("\n"+text); 


     }else{ 
     //Colour text needs to be set. 


     //Take the CurrentText 
     String CurrentText = MAIN_DISPLAY.getText().toString(); 
     CurrentText = CurrentText+"\n"; 

     SpannableString SpannableText = new SpannableString(CurrentText + text); 

     switch(Colour){ 
     case 1: 
       SpannableText.setSpan(new ForegroundColorSpan(Color.RED), CurrentText.length(), SpannableText.length(), 0); 
     break; 
     } 


    //You cannot append the Spannable text (if you do you lose the colour) 
    MAIN_DISPLAY.setText(SpannableText, BufferType.SPANNABLE); 
    } 

이 새로운 방법이 작동하고 새 줄이 빨간색으로 표시됩니다. 포맷

문제

  1. 만 마지막 줄은 빨간색입니다. 새 줄을 빨간색으로 설정하면 이전 서식이 텍스트를 검색하는 방식으로 인해 손실됩니다.

    String CurrentText = MAIN_DISPLAY.getText(); toString();

  2. 것은 난 단지 사용자가 최고입니다 볼의 setText 사용할 때 이제 글고 상자의 아래쪽 (마지막 입력)를 표시 한 글고 치기에 문자열을 추가되었을 때.

마지막으로 내 질문 :

는 형식의 텍스트를 추가하는 방법이 있나요?

또는 ... EditText에서 서식있는 텍스트를 가져온 다음 .setText를 사용할 때 현재 서식을 유지할 수 있습니까?

만약 그렇다면 ... 상단에 대항하여 하단에 초점을 맞추는 방법이 있습니까?

감사합니다. 추가 정보가 필요한 경우 의견을 남겨주세요. 지금 당분간 붙어 있습니다.

답변

1

다음의 수정 작업을해야 ..

public void PrintToUser(String text, int Colour){ 
    ... 
    ... 
    Editable CurrentText = MAIN_DISPLAY.getText(); 
    int oldLength = CurrentText.length(); 
    CurrentText.append("\n" + text); 

    switch(Colour){ 
     case 1: 
     CurrentText.setSpan(new ForegroundColorSpan(Color.RED), 
          oldLength, CurrentText.length(), 0); 
     break; 
    } 
} 
+0

감사합니다. 제가 일하는 것을 완벽하게 찾고 있었기 때문에, 당신이 대답을 알게되면 항상 아주 단순 해 보입니다! - 다시 한번 감사드립니다. –

0

시도 변경

SpannableText.setSpan(new ForegroundColorSpan(Color.RED), CurrentText.length(), SpannableText.length(), 0); 

SpannableText.setSpan(new ForegroundColorSpan(Color.RED), 0, SpannableText.length(), 0); 
+0

이 빨간색으로 모든 텍스트를 바꿀 것, 내가하고 싶은 일부는 약간의 빨강, 녹색, 파랑 등 일부 텍스트는 검은 색이합니다 ..(출력에 따라 다름) 그러나 당신의 대답에 대한 감사합니다. –

2

나의 제안은 방법을 사용하는 것입니다 :

myTextView.setText(Hmtl.fromHtml(myString)); 

mystring에이 형식의 수 :

를 -
관련 문제