我想知道如何在TextView中更新Drawable,所以我编写了以下代码:
public class MainActivity extends AppCompatActivity {
private TextView mText;
private ColorDrawable mColorDrawable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mText = (TextView) findViewById(R.id.text_view);
mColorDrawable = new ColorDrawable(Color.RED);
mColorDrawable.setBounds(0, 0, 100, 100);
SpannableString string = new SpannableString("This is a color box: /box, right?");
string.setSpan(new ImageSpan(mColorDrawable), 21, 25, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
mText.setText(string);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mColorDrawable.setColor(Color.YELLOW);
mColorDrawable.setBounds(0, 0, 200, 200);
mText.invalidate();
}
}, 1000);
}
}
预期结果是/box
被替换为红色方块。 1秒后,它变大,颜色变成黄色。
以下是方框颜色变化之前和之后的截图。
如您所见,颜色已更改,但尺寸未正确更改。此外,框后面的文字不会向右移动,而是被框覆盖。
所以我的问题是,如果再次使用setText()
,如何让TextView重新布局Drawables和文本?
答案 0 :(得分:0)
尝试在run()中传递“int size”,然后添加setTextSize(size)和setBounds:
vector::size()