Android TextView设置文本和颜色



我想在onCreate方法期间随机设置文本的大小和颜色

这是我的代码:

private TextView start;
private boolean isClicked;
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    start = (TextView) findViewById(R.id.tvStart);
    isclick = false;
    Random r = new Random();
    while (isclick = false)
    {
        start.setTextSize(r.nextInt(50));
        start.setTextColor(Color.rgb(r.nextInt(256), r.nextInt(256),
                r.nextInt(256)));
    }

}

我的这个代码不起作用。

在onCreate期间,我希望文本的大小和颜色连续且随机地变化。

它对我有效:(让我知道是否有问题)

private boolean isclick;
Handler handler ; 
private TextView start;
private boolean isClicked;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        start = (TextView) findViewById(R.id.tvStart);
        handler = new Handler();
        isclick = false;
        new Thread(new Runnable() {
            @Override
            public void run() {
                 while (isclick == false)
                    {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        Random r = new Random();

                            start.setTextSize(r.nextInt(50));
                            start.setTextColor(Color.rgb(r.nextInt(256), r.nextInt(256),
                                    r.nextInt(256)));
                        }
                    });
                     Log.w("DEBUG","Text View  value : "+ start.getText().toString());
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                }

            }
        }).start();

    }

您需要在修改UI小部件时使用处理程序这篇文章可能对你有所帮助。

以下是一些在名为x 的TextView上工作的代码

//create random value between 0 and 70
int random = (int)Math.ceil(Math.random()*70);
x.setTextSize((float)random);
int red = (int)Math.ceil(Math.random()*255);
int green = (int)Math.ceil(Math.random()*255);
int blue = (int)Math.ceil(Math.random()*255);
Color randomcolor = new Color();
if (red < 16){
    hexred = "0" + Integer.toHexString(red);
}else {
    hexred = Integer.toHexString(red);
}
if (green < 16){
    hexgreen = "0" + Integer.toHexString(green);
}else {
    hexgreen = Integer.toHexString(green);
}
if (blue < 16){
    hexblue = "0" + Integer.toHexString(blue);
}else {
    hexblue = Integer.toHexString(blue);
}
String color = "#" + hexred + hexgreen + hexblue;
x.setTextColor(randomcolor.parseColor(color));

但是,不建议继续更改。如果你想让它持续地改变颜色,那么颜色和大小的更新可能会减慢,什么都不显示。此外,由于对XML的计算,可能会发生整个XML布局未加载的情况。

如果您希望您的文本连续随机更改,请使用thread
把你的"while"动作。内部运行方法,并给它一些延迟。

我认为这是因为isclick = falseif子句中缺少=。它应该是isclick==false

最新更新