如何在运行时在TextView中组合文本和图像

时间:2013-04-19 11:54:18

标签: android android-imageview textview spannablestring

目前,我有一个应用程序,在TextViewViewPager的帮助下,在Fragments中显示文字页面。

是否可以在文本视图中包含将在运行时执行的文本的图像?

我最初的想法是使用SpannableStringImageSpan,但如果图片大于一行文字,文本的其余部分会围绕它还是通过它?

可以在运行时创建ImageView放在特定位置并且文本环绕它吗?

任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我确实可以在textview中显示图像

public static Spannable getSmiledText(Context context, String text) {
    SpannableStringBuilder builder = new SpannableStringBuilder(text);
    int index;
    for (index = 0; index < builder.length(); index++) {
        for (Entry<String, Integer> entry : emoticons.entrySet()) {
            int length = entry.getKey().length();
            if (index + length > builder.length())
                continue;
            if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) {
                builder.setSpan(new ImageSpan(context, entry.getValue()), index, index + length,
                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                index += length - 1;
                break;
            }
        }
    }
    return builder;
}

public static final HashMap<String, Integer> emoticons = new HashMap<String, Integer>();
static {
    // emoticons.put("cup:", R.drawable.cup);
    emoticons.put("glass", R.drawable.glasses);
    emoticons.put("bike", R.drawable.bike);
    emoticons.put("bottle", R.drawable.bottle);

}

然后将文字设为

textView.setText(getSmiledText(context,"I love to ride bike with glass."));

直接在TextView上设置自行车(R.drawable.bike)和眼镜(R.drawable.glasses)的图像