Shahbaz Talpur
Shahbaz Talpur

Reputation: 327

How can I change color of button's background

I have many buttons in my calculator app. I am testing with only one button to start, that buttons id is "one" and should change colour when I click the blue theme button. I have tried following methods:

blueTheme = (Button) findViewById(R.id.blueTheme);
blueTheme.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        one.setBackgroundColor(Color.argb(175, 144, 202, 249));
        one.setBackgroundColor(Color.parseColor(/*hex code here*/));
        one.setBackgroundColor(Color.BLUE);

    }

});    

Nothing seems to do anything. I am trying to change the colour of the button in one activity via an option in another activity. Here's actual button one:

one = (Button) findViewById(R.id.one);
one.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        result.append("1");
    }
});

xml code of one in activity_main.xml:

<Button android:id="@+id/one"
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_weight="1"
        android:background="#CCCCCC"
        android:text="1"
        android:textColor="#FF6600"
        android:textSize="50sp"
        android:layout_marginRight="1dp"
        android:layout_marginTop="1dp"
        android:layout_marginBottom="1dp" />

Idea is that there will be a option in another intent where I can change colors of calculator, but testing on one button fails, can't proceed. Thank you for your time.

Upvotes: 2

Views: 1240

Answers (3)

Nick Cardoso
Nick Cardoso

Reputation: 21733

The problem is the click from one activity cant get through to the other activity unless you pass it over.

In the activity with the blue theme button

blueTheme.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        //NOTE: Where I've put MainActivity that should actually be the name
        //      of whatever activity this code is nested in
        Intent intent = new Intent(MainActivity.this, OtherActivity.class); //use your real class name
        intent.putExtra(OtherActivity.EXTRA_COLOR, Color.BLUE);
        startActivity(intent);

    }

});  

In your OtherActivity.class

public class OtherActivity extends Activity {

    public static String EXTRA_COLOR = "EXTRA_COLOR";

    public void onCreate(...) {

        View one = (Button) findViewById(R.id.one);

        //NOTE: if you add singleTop to this activity in the manifest
        //      you might need to do this on onNewIntent

        Intent intent = getIntent();
        if (intent.hasExtra(EXTRA_COLOR)) {
            int color = intent.getIntExtra(EXTRA_COLOR, Color.WHITE);
            one.setBackgroundColor(color);
        }

    }

}

Upvotes: 1

David Heisnam
David Heisnam

Reputation: 2491

If you want to set background color without using a pre-defined color resource, do it like so

one.setBackgroundColor(0xFFFF0000); // Red
one.setBackgroundColor(0xFF00FF00); // Green

Here, 0xFF00FF00 is equivalent to #ff00ff00 (#aarrggbb)

Upvotes: 0

Dr. Ehsan Ali
Dr. Ehsan Ali

Reputation: 4884

Use this :

// If you're in an activity:
yourButton.setBackgroundColor(getResources().getColor(R.color.red));
// OR, if you're not: 
yourButton.setBackgroundColor(yourButton.getContext().getResources().getColor(R.color.red));

Upvotes: 0

Related Questions