2010-01-29 3 views
26

EditText 및 Spannable 텍스트 오브젝트 사용에 어려움을 겪고 있습니다. 요즘에는 API 문서를 열 번 정도 읽었지만 제대로 이해하지 못했습니다. 그래서 EditText와 Spannable을 어떻게 사용하는지 보여주는 예제를 찾고 있습니다.Spanned 및 Spannable 텍스트에 대한 예제가 있습니까

+5

http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring 이것은 Spannable 및 Textveiw로 무엇이든 할려고하는 모든 사람들에게 완벽한 답입니다. – JehandadK

+0

몇 가지 예는 [여기] (http://stackoverflow.com/a/41953808/3681880) 및 [여기] (http://androidcocktail.blogspot.com/2014/03/android-spannablestring-example.html)를 참조하십시오. . – Suragch

답변

30

API에서 파악할 수없는 것을 지정하지 않았으므로 사용자의 질문에 대답하기가 어렵습니다 (짧은 대답 : 일반적인 질문이 아닌 특정 질문으로 질문 다시 작성).

전형적인 Spannable-예는 다음과 같이이 기울임 내로 글고에서 선택한 텍스트를 설정하는 것입니다 :

Spannable str = mBodyText.getText(); 
if(mBodyText.getSelectionEnd() > mBodyText.getSelectionStart()) 
    str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 
         mBodyText.getSelectionStart(), mBodyText.getSelectionEnd(), 
         Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
else 
    str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 
       mBodyText.getSelectionEnd(), 
       mBodyText.getSelectionStart(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

이 절단하고 직접 pastability이 고통을 수 있도록, 다른 뭔가에서 붙여 넣기 만한다 적어도 Spannable (이 경우는 StyleSpan)의 작동 예를 보여줍니다. API에서 다른 유형의 범위 (특히 ImageSpan)를 찾을 수 있습니다. 이것은 새로 변환 된 드로더 중 일반적인 질문입니다.

+0

이 답장은 저에게 매우 도움이됩니다, 감사합니다. 그러나 나는 아직도 많은 문제가있다. 나는 풀어야한다. 위에서 설명한대로 내가 직면 한 문제를 보여주는 링크가 있습니다. http://stackoverflow.com/questions/2093111/when-some-text-is-copied-and-pasted-pasted-text-inherit-previous-text-style-it 문제에 대해 더 자세히 알고 싶다면, 여기에 또 다른 링크가 있습니다. http://code.google.com/p/blogaway/issues/detail?id=32 아마도 위의 링크를 통해 문제의 원인을 파악할 수 있습니다. – skysign

+0

'SpannableString'의 목적이 아주 명백한 반면, SpannedString의 예는 매우 유용합니다. 무엇을 사용해야할지, 그리고 처음부터 어떻게 만드는지 완전히 불분명합니다. – AndreKR

9

나는 그걸 알아 내려고 노력하고 있으며, 불필요하게 까다로워 보인다.

기존의보기에 새로운 spannable 텍스트를 추가하는 방법은 다음과 같습니다. 보기에 컬러 텍스트를 추가하고 싶었습니다. 이렇게하는 유일한 방법처럼 보였습니다.

못생긴 해킹이 느껴지 긴하지만 더미 텍스트 뷰 (텍스트가없는 곳)를 만들고 거기에 텍스트 스타일을 지정한 다음 스타일이 지정된 텍스트를 원하는 곳에 추가 할 수 있습니다. 그것을위한 신용은 anddev.org에서 iifuzz로갑니다. 나는 당신이 그렇게처럼 SpannableFactory을 사용하여 새 spannable 텍스트를 만들 수 있어야한다고 생각

spanbuffer = new TextView(context); 
    spanbuffer.setText(newText, TextView.BufferType.SPANNABLE); 
    Spannable s = (Spannable) spanbuffer.getText(); 
    s.setSpan(new ForegroundColorSpan(Color.RED), 0, newText.length() - 1, 0); 
    this.append(s); 

:과 같이 내 코드 보인다

Spannable s = Spannable.Factory.getInstance().newSpannable(newText); 

을하지만 난이 텍스트를 가져올 수 없습니다 실제로 새로운 스팬 효과를 보여주기 때문에 포기했습니다.

관련 문제