2011-09-30 8 views
0

ImageSpan을 위젯에 추가 할 때 제한이 있습니까? 이 동일한 코드는 표준 TextView에서 올바르게 작동합니다.위젯에 ImageSpan이 있습니까?

SpannableStringBuilder buf = new SpannableStringBuilder(""); 
if(!TextUtils.isEmpty(message.getMessageBody())) { 
    SmileyParser parser = SmileyParser.getInstance(); 
    buf.append(parser.addSmileySpans(group ? message.getMessageBodyWithoutName() : message.getMessageBody())); 
} 
view.setTextViewText(R.id.message_body, buf); 

감사합니다.

편집 1 :

public CharSequence addSmileySpans(CharSequence text) { 
SpannableStringBuilder builder = new SpannableStringBuilder(text); 

Matcher matcher = mPattern.matcher(text); 
while (matcher.find()) { 
    int resId = mSmileyToRes.get(matcher.group()); 
    builder.setSpan(new ImageSpan(mContext, resId), 
        matcher.start(), matcher.end(), 
        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
} 
return builder; 

}

+0

스마일리는 어디에서오고 있습니까? Iow, '우리'를 위해 당신은 무엇을 사용하고 있습니까? 그리고 당신의 증상은 무엇입니까? – CommonsWare

+0

웃는 얼굴은 현지 자산입니다. 파서는 Drawable이 올바르게 설정된 ImageSpan을 반환합니다 (다른 여러 위치에서 작동). 위젯이 표시되지 않고 텍스트 대신 사용됩니다. – tsmith

답변

0

웃는 년대는 지역의 자산입니다.

나는 문자 그대로이 이미지가 assets/임을 의미합니다.

내 생각 엔 홈 화면에서 자산 참조를 해결하는 데 어려움이 있습니다. 테스트를 위해 이미지를 외부 저장소에 넣고 Uri.fromFile()을 사용하여 Uri을 만듭니다. 그게 효과가 있다면, 드로어 블 리소스로 넣고 리소스 ID를 사용해보십시오. 또는 Uri 리소스를 사용해보십시오.

Uri.parse("android.resource://your.package.name.goes.here/" + R.raw.myvideo); 
+0

죄송하지만, 진술을 바꿔 보겠습니다. 이미지는 새로운 ImageSpan()에서 인스턴스화 될 때 drawable-mdpi/hdpi에 저장되고 리소스 ID로 참조됩니다. 위젯은 Layout, Content에 사용하는 다른 이미지를 표시 할 때 아무런 문제가 없습니다. 단지 TextView에서 ImageSpan을 사용할 때만 작동합니다. 나는 당신의 방법을 시도하고 결과를보고 할 것입니다. – tsmith

+0

@Tyler : 제 생각에 홈 화면은 ImageSpan을 해석 할 때 자신의 앱 대신 자신의 앱의 리소스에서 가져와야한다는 것을 인식하지 못합니다. 'android.resource''Uri' 문법은이 문제를 지나치게합니다. – CommonsWare

+0

권장 사항을 보내 주셔서 감사합니다. android.resource uri를 사용하여 불행히도 작동하지 않았습니다. 이 수정 프로그램에 많은 시간을 투자하기 전에이 방법을 사용할 수 있습니까? 아니면 여기서 알려진 제한 사항이 있습니까? – tsmith

관련 문제