如何在Android中更改TextView中Drawable的大小?

时间:2017-02-07 18:07:01

标签: android android-layout android-drawable spannablestring

我想知道如何在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秒后,它变大,颜色变成黄色。

以下是方框颜色变化之前和之后的截图。

Before

After

如您所见,颜色已更改,但尺寸未正确更改。此外,框后面的文字不会向右移动,而是被框覆盖。

所以我的问题是,如果再次使用setText(),如何让TextView重新布局Drawables和文本?

1 个答案:

答案 0 :(得分:0)

尝试在run()中传递“int size”,然后添加setTextSize(size)和setBounds:

vector::size()