颜色根据android中该按钮的点击而改变

时间:2013-06-28 10:40:29

标签: android button

我根据点击该按钮制作了一个非常简单的按钮颜色更改程序。我已经尝试了下面的代码,但是没有用。请帮我一样,我的代码如下:

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);
        }
    }



}

5 个答案:

答案 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"));
        }
            }
        });
}
}