我根据点击该按钮制作了一个非常简单的按钮颜色更改程序。我已经尝试了下面的代码,但是没有用。请帮我一样,我的代码如下:
main.java
package com.example.buttonclickdemo;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
Button b;
int cnt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b=(Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
cnt++;
}
});
if(cnt<5)
{
b.setBackgroundColor(16711681);
}
else if (cnt>5 && cnt<10) {
b.setBackgroundColor(16711936);
}
else{
b.setBackgroundColor(65536);
}
}
}
答案 0 :(得分:2)
按钮颜色更改(if条件)在on create方法内部,因此只有在加载活动时才会调用它,而是在click方法上将其更改为内部,以便每次点击都可以检查
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b=(Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
cnt++;
if(cnt<5)
{
b.setBackgroundColor(16711681);
}
else if (cnt>5 && cnt<10) {
b.setBackgroundColor(16711936);
}
else{
b.setBackgroundColor(65536);
}
}
});
}
答案 1 :(得分:1)
您需要将您的逻辑放入onClick()
方法。目前它位于onCreate()
,只能被调用一次。
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
cnt++;
if(cnt<5) {
b.setBackgroundColor(16711681);
}
else if (cnt>5 && cnt<10) {
b.setBackgroundColor(16711936);
}
else {
b.setBackgroundColor(65536);
}
}
});
答案 2 :(得分:1)
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
cnt++;
if(cnt<5)
{
b.setBackgroundColor(16711681);
}
else if (cnt>5 && cnt<10) {
b.setBackgroundColor(16711936);
}
else{
b.setBackgroundColor(65536);
}
}
});
您需要在OnClickListener
内设置if条件。因为onCreate
只会在创建Activity
时调用一次,因此它只会执行一次。
答案 3 :(得分:1)
移动此
if(cnt<5)
{
b.setBackgroundColor(16711681);
}
else if (cnt>5 && cnt<10) {
b.setBackgroundColor(16711936);
}
else{
b.setBackgroundColor(65536);
}
到onClick
听众。
只有在事件发生后才调用onClick回调,并且已经调用了你编写的其余代码,因此颜色不会改变。
更好的是定义自定义xml的
答案 4 :(得分:1)
我通过以下代码解决了问题:
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
cnt++;
if(cnt<5)
{
b.setBackgroundColor(Color.parseColor("#d4cae2"));
}
else if (cnt>5 && cnt<10) {
b.setBackgroundColor(Color.parseColor("#00cbcc"));
}
else{
b.setBackgroundColor(Color.parseColor("#d1bff0"));
}
}
});
}
}