以下是我的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失踪
如果我倾斜屏幕 1失踪
任何人都可以帮助我找出图像丢失的原因以及是否有更好的方法。
预期输出:根据循环它应该显示(可绘制,Hello World)15次,但在这个例子中,drawable没有渲染三次(当我倾斜时)。包装的一些问题?
答案 0 :(得分:1)
builder.setSpan(image, 1, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
应该是
builder.setSpan(image, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
因为您使用3个空格作为跨度范围