2014-02-20 1 views
3

여러 줄로 된 TextView에 요소를 동적으로 채우고 있습니다. 입력 된 요소의 줄은 줄 바꿈 가능합니다. 각 요소는 두 부분으로 구성됩니다 : 텍스트 다음에 이미지가 있습니다. 이미지 길이는 2 자입니다. 요소는 공백으로 구분됩니다. 요소를 추가하려면 SpannableStringBuilder를 사용하고 있습니다. 한 가지는 제외하고 모든 것이 잘 작동합니다. 다음 줄로 이동하는 새 요소를 추가하는 동안 (TextView가 줄을 래핑 함) 이전 줄의 마지막 줄의 이미지는 해당 줄에서 여전히 사용할 수있는 공간의 크기에 관계없이 사라집니다. 새 줄에 새로 추가 된 요소를 제거하면 해당 이미지가 다시 나타납니다. 따라서 모든 줄의 마지막에있는 모든 요소의 이미지 부분이 나타나지 않습니다. Android 4.0.3을 사용하고 있습니다. 내가 TextWatcher있는 솔루션이 있다는 것을 알고SpanableStringBuilder 및 ImageSpan이있는 Wrappable TextView는 모든 행의 마지막 이미지를 숨 깁니다.

TextView textView = (TextView) findViewById(R.id.textview); 
textView.setMovementMethod(new ScrollingMovementMethod()); 

SpannableStringBuilder ssb = new SpannableStringBuilder(); 

//then for each new element I do the following 
ssb.append(" "); //space separating elements (skip for the first element) 
ssb.append("text"); 
Bitmap image = BitmapFactory.decodeResource(getResources(), imageId); 
ssb.append(" "); //prepare 2-character space for the image 
ssb.setSpan(new ImageSpan(image), ssb.length() - 2, ssb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //put the image to the prepared space 
textView.setText(ssb, BufferType.SPANNABLE); 

:

여기 내 코드입니다. 동시에, 나는 코드에 어떤 흐름도 보이지 않으며 모든 라인의 마지막 이미지가 왜 숨겨져 있는지 이해할 수 없다. 모든 제안은 매우 감사하겠습니다. 감사.

+1

문제를 해결할 수 있었습니까? 나는 같은 문제가있다. 친절하게 솔루션을 공유하십시오. –

+0

이 문제에 대한 해결책을 듣고 싶습니다. 동일한 문제가 있습니다. – Camputer

+0

@ 4aRkKn1gh7 아래 [내 답변] (http://stackoverflow.com/a/33282500/4899346)을 확인하십시오. –

답변

7

해결책을 찾았습니다. 문제는 텍스트 줄을 계산하는 방식입니다. 행이 공백 문자로 끝나면이 공간은 계산 중에 생략됩니다. 따라서 이미지의 자리 표시 자로 문자를 사용하면됩니다. 이처럼 :

ssb.append(" i"); //prepare 2-characters for the image 

PS : 당신이 모든 이미지에 대한 2 문자열을 사용하는 이유를 모르겠어요,하지만 난 당신이 하나의 숯불을 사용할 수 있다고합니다. 다음은 좀 더 효율적인 코드입니다.

int start = ssb.length(); 
ssb.append('i'); 
ssb.setSpan(new ImageSpan(image), start, ssb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
+1

이것은 나를 완전히 도와 줬는데, 고마워! – jds17

+0

해결했습니다! 감사! – Harry

관련 문제