NagarjunaReddy
NagarjunaReddy

Reputation: 8645

Android how to Change Default background color in Button click?

I need to show different color on button after click because user need to know button is Click. I don't understand how to do this? Give me suggestion. button click shoud be programatically, No Need to create XML for this

//XML file saved at res/drawable/button_bg.xml:

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_pressed="true"
      android:color="#ffff0000"/> <!-- pressed -->
   <item android:state_focused="true"
      android:color="#ff0000ff"/> <!-- focused -->
   <item android:color="#ff000000"/> <!-- default -->
 </selector>

in JAVA

am create like this

 Button Settings_Button = new Button(this)  ;        
 Settings_Button.setClickable(true);
 //Settings_Button.setBackgroundResource(R.drawable.selector);
 Settings_Button.setOnClickListener(new View.OnClickListener() {
 public void onClick(View view) {                    
   // Intent newIntent = new Intent(activity.getBaseContext(), ProfileSettingActivity.class);
   // activity.startActivity(newIntent);             
     }
 });

BUt this is not working

EDIT : How to change Background color when click button in programatically.

Upvotes: 1

Views: 4644

Answers (4)

Ashok Kateshiya
Ashok Kateshiya

Reputation: 699

You can use this line in buttons onclicklistener,button.setBackgroundColor(Color.WHITE);

Upvotes: 0

Shailendra Madda
Shailendra Madda

Reputation: 21551

Try Like this,

main.xml

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/myLayout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="64dp"
            android:layout_marginTop="71dp"
            android:text="changeColor" />

    </LinearLayout>

ChangeBackgroundActivity.java

public class ChangeBackgroundActivity extends Activity {
/** Called when the activity is first created. */
    Button blueButton;
    LinearLayout myLO;
    @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        myLO=(LinearLayout)findViewById(R.id.myLayout);
        blueButton=(Button)findViewById(R.id.button1);
        blueButton.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {
            // TODO Auto-generated method stub
            myLO.setBackgroundColor(Color.BLUE);

        }
    });
    }
}

Upvotes: 0

Hareshkumar Chhelana
Hareshkumar Chhelana

Reputation: 24848

try this way,hope this will help you...

button_selector

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/button_pressed" android:state_pressed="true"></item>
    <item android:drawable="@color/button_pressed" android:state_focused="true"></item>
    <item android:drawable="@color/button_default" android:state_enabled="true" android:state_focused="false" android:state_pressed="false"></item>
    <item android:drawable="@color/button_pressed" android:state_enabled="false"></item>

</selector>

color

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="button_pressed">#ffff0000</color>
    <color name="button_default">#ff0000ff</color>
</resources>

ACTIVITY code

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn = new Button(this);
        btn.setBackgroundResource(R.drawable.button_selector);
        btn.setText("Custom Button");
        addContentView(btn,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

    }

Upvotes: 1

Niranj Patel
Niranj Patel

Reputation: 33248

Create selector drawable according all state.

Below is sample example.

btn_green_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:state_focused="false"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/btn_green_unselected" />
    <item
        android:state_focused="true"
        android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/btn_green_selected" />
    <!-- Focused states -->
    <item
        android:state_focused="true"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@drawable/btn_green_selected" />
    <!-- Pressed state -->
    <item
        android:state_pressed="true"
        android:drawable="@drawable/btn_green_selected" />

</selector>

btn_green_selected.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">

    <solid android:color="#00B2B2"/>

</shape>

btn_green_unselected.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">

    <solid android:color="#8ED3CD"/>

</shape>

now applied btn_green_selector.xml in coding.

Settings_Button.setBackgroundResource(R.drawable.btn_green_selector);

you can also use Images instead of Shape.

Upvotes: 0

Related Questions