Java 按钮如何多次更改文本视图颜色?
我试着让一个按钮将文本视图的颜色更改为白色,但第二次按下时将其更改为蓝色,第三次按下时将其更改为红色,依此类推。当我尝试它时,它显然只选择了最后一个(红色),不会再改变。有人知道我该怎么做吗?真的卡住了。代码如下:Java 按钮如何多次更改文本视图颜色?,java,android,colors,textview,Java,Android,Colors,Textview,我试着让一个按钮将文本视图的颜色更改为白色,但第二次按下时将其更改为蓝色,第三次按下时将其更改为红色,依此类推。当我尝试它时,它显然只选择了最后一个(红色),不会再改变。有人知道我该怎么做吗?真的卡住了。代码如下: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutPar
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main);
dc1 = (TextView)findViewById(R.id.digitalClock1);
bt1 = (Button)findViewById(R.id.button1);
Handler handler = new RandomMoveHandler((TextView) findViewById(R.id.digitalClock1));
handler.sendEmptyMessage(0);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dc1.setTextColor(Color.WHITE);
dc1.setTextColor(Color.BLUE);
dc1.setTextColor(Color.RED);
}
});
}
我现在不能试一试。检查打字错误尝试以下操作:
int [] colors = new int[]{Color.WHITE, Color.BLUE, Color.RED};
int index = 0;
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dc1.setTextColor(colors[index]);
index++;
if(index == colors.length)
index = 0;
}
});
嗯,看起来像是一个初学者的问题。 您现在正在做的是,当您单击按钮时,会调用
onClick()
方法,然后颜色会在眨眼之间设置为白色、蓝色、红色。
您要做的是与其他答案更相似的事情您需要计算单击次数,请尝试以下操作:
private int flag = 0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main2);
dc1 = (TextView) findViewById(R.id.digitalClock1);
bt1 = (Button) findViewById(R.id.button1);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (flag == 0)
dc1.setTextColor(Color.WHITE);
else if (flag == 1)
dc1.setTextColor(Color.BLUE);
else if (flag == 2)
dc1.setTextColor(Color.RED);
if (flag++ >= 2)
flag = 0;
}
});
你将它一个接一个地设置在一个块中,它只会变为红色。那么我如何为按钮创建一个数组?只需使用case/switch语句即可。@JasonMills:下面的答案都是正确的,如果将count final设置为其值不能更改integer标记=(v.getTag()==null),则无法在不同方法中定义的内部类中引用非final变量count?0:(整数)v.getTag();int color=colors[tag];dc1.setTextColor(颜色);v、 setTag((tag+1)%7);}很好用!你能告诉我,如果我想添加更多的颜色,我是要将它们与其他颜色一起添加到顶部,还是必须更改其他颜色;放置v.setTag((tag+1)%colors.length);然后在阵列中添加其他颜色你可以告诉我,白色、红色、蓝色、绿色、青色和洋红是我唯一可以使用的颜色吗?我可以不指定十六进制值吗?使用Color.parseColor(#YOURHEX”)并将返回值(int)存储在数组中
private int count = 0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main);
dc1 = (TextView)findViewById(R.id.digitalClock1);
bt1 = (Button)findViewById(R.id.button1);
Handler handler = new RandomMoveHandler((TextView) findViewById(R.id.digitalClock1));
handler.sendEmptyMessage(0);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(count)
{
case 0: dc1.setTextColor(Color.WHITE); count++; break;
case 1: dc1.setTextColor(Color.BLUE); count++; break;
case 2: dc1.setTextColor(Color.RED); count = 0; break;
}
}
});
private int flag = 0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main2);
dc1 = (TextView) findViewById(R.id.digitalClock1);
bt1 = (Button) findViewById(R.id.button1);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (flag == 0)
dc1.setTextColor(Color.WHITE);
else if (flag == 1)
dc1.setTextColor(Color.BLUE);
else if (flag == 2)
dc1.setTextColor(Color.RED);
if (flag++ >= 2)
flag = 0;
}
});