向ImageView动态添加图像的问题

时间:2013-11-18 00:25:24

标签: android textview

以下是我的Activity Layout XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:bufferType="spannable"
    android:id="@+id/textView"
    android:text="@string/empty" />

</RelativeLayout>

以下是我在Activity

中使用的代码
    TextView tView = (TextView) findViewById(R.id.textView);
    for(int i=0;i<15;i++){
    appendDrawable(tView,R.drawable.ic_launcher);
    appendText(tView,R.string.message);
    }

,方法是:

private void appendDrawable(TextView tView, int drawableId) {
    SpannableStringBuilder builder = new SpannableStringBuilder();
    String THREE_SPACES = "   ";
    builder.append(THREE_SPACES);
    Drawable drawable = getResources().getDrawable(drawableId);
    drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
    ImageSpan image = new ImageSpan(drawable);      
    builder.setSpan(image, 1,  2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    tView.append(builder);  
}

private void appendText(TextView tView, int stringId) {
    tView.append(getResources().getString(stringId));
}

我得到的输出不是我的预期 3失踪 output from Nexus

如果我倾斜屏幕 1失踪 output from Nexus

任何人都可以帮助我找出图像丢失的原因以及是否有更好的方法。

预期输出:根据循环它应该显示(可绘制,Hello World)15次,但在这个例子中,drawable没有渲染三次(当我倾斜时)。包装的一些问题?

1 个答案:

答案 0 :(得分:1)

builder.setSpan(image, 1,  2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

应该是

builder.setSpan(image, 0,  3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

因为您使用3个空格作为跨度范围