2

我知道我可以通过以下方式更改按钮上文本的颜色:

button.setTextColor(getApplication().getResources().getColor(R.color.red)); //TAKE DEFAULT COLOR

或者

button.setTextColor(0xff0000); //SET CUSTOM COLOR 

或者

button.setTextColor(Color.parseColor("#ff0000")); 

但是我想为文本使用两种颜色:例如,假设我的按钮具有以下文本:“单击此处”,我希望“单击”部分显示为红色,而“此处”部分显示为蓝色。

这可能吗 ?

4

2 回答 2

12

你应该使用ForegroundColorSpan

像这样试试

        Button b = (Button) findViewById(R.id.button1);
        SpannableString text = new SpannableString("Click Here");
        // make "Clicks" (characters 0 to 5) Red
        text.setSpan(new ForegroundColorSpan(Color.RED), 0, 5, 0);
        // make "Here" (characters 6 to 10) Blue
        text.setSpan(new ForegroundColorSpan(Color.BLUE), 6, 10, 0);
        // shove our styled text into the Button
        b.setText(text, BufferType.SPANNABLE);

输出

在此处输入图像描述

希望这会帮助你。

于 2013-10-21T17:42:06.267 回答
3

对的,这是可能的

这样做

        Button btn = (Button) findViewById(R.id.btn);

        btn.setText(Html.fromHtml("<font color='red'>Click</font>"
            + "<font color='blue'> Here</font>"));
于 2013-10-21T17:00:26.620 回答