Android Button color changing on onClick?

前端 未结 6 785
礼貌的吻别
礼貌的吻别 2020-12-16 22:38

I am facing a problem .

I have two Button object.

ButtonA ButtonB

Requirement:-

When ever I press

相关标签:
6条回答
  • 2020-12-16 23:03

    Use below code..

    Boolean isOnePressed = false, isSecondPlace = false;
    b1.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    isOnePressed = true;
                    b1.setBackgroundColor(Color.BLUE);
                    if (isSecondPlace) {
                        b2.setBackgroundColor(Color.WHITE);
                        isSecondPlace = false;
                    }
    
                }
            });
            b2.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    b2.setBackgroundColor(Color.BLUE);
                    isSecondPlace = true;
                    if (isOnePressed) {
                        b1.setBackgroundColor(Color.WHITE);
                        isOnePressed = false;
                    }
    
                }
            });
    

    Hope it helps...

    0 讨论(0)
  • 2020-12-16 23:05

    I'm not tested below code. but i think this will helpful to you.

    private Drawable defaultDrawableA;
    private Drawable defaultDrawableB;
    private Button buttonA , buttonB;
    
    
    buttonA = (Button) findViewById(R.id.buttonA);
    buttonB= (Button) findViewById(R.id.buttonB);
        buttonA .setOnClickListener(this);
        buttonB.setOnClickListener(this);
    
    
    @Override
    public void onClick(View v) {
        if (v == buttonA)
    
    if(defaultDrawableA== null)
    {
        defaultDrawableA=buttonA.getDrawable();
        buttonA.setBackgroundColor(Color.BLUE);
    }
    else
    {
        buttonA.setBackgroundDrawable(defaultDrawableA);
        defaultDrawableA=null;
    }
        else if (v == buttonB)
    
    if(defaultDrawableB == null)
    {
        defaultDrawableB=buttonB.getDrawable();
        buttonB.setBackgroundColor(Color.RED);
    }
    else
    {
        buttonB.setBackgroundDrawable(defaultDrawableB);
        defaultDrawableB=null;
    }
    
        return;
    }
    
    0 讨论(0)
  • 2020-12-16 23:05

    Try this...

    button_bg.xml

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
        android:drawable="@color/button_pressed"/> <!-- pressed -->
    <item android:drawable="@color/button_default"/> <!-- default -->
    

    activity_main.xml

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">
    
    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/button_bg"
        android:text="Click Me"
        android:textColor="#fff" />
    

    0 讨论(0)
  • 2020-12-16 23:06

    Try this:

    final Button buttonA = (Button) findViewById(R.id.ButtonA);
    final Button buttonB = (Button) findViewById(R.id.ButtonB);
    
    buttonA.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    buttonB.setBackgroundColor(Color.CYAN);
    }
    });
    
    buttonB.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    buttonA.setBackgroundColor(Color.RED);
    }
    });
    

    or

    make selector.xml in drawables folder and copy code below in it:

    <?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
      <item android:state_focused="true" android:state_pressed="true" 
        android:drawable="@drawable/focused_pressed" /> 
      <item android:state_focused="false" android:state_pressed="true" 
        android:drawable="@drawable/pressed" /> 
      <item android:drawable="@drawable/normal" /> 
    </selector>
    

    copy this code for buttonA in your layout

    <Button
        android:id="@+id/buttonA"
        style="@drawable/test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Button A" />
    
    0 讨论(0)
  • 2020-12-16 23:09

    buttoncolor.xml

    <?xml version="1.0" encoding="utf-8"?> 
      <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
          <item android:state_focused="true" android:state_pressed="true" 
                android:drawable="@drawable/bgalt" /> 
          <item android:state_focused="false" android:state_pressed="true" 
                android:drawable="@drawable/bgalt" /> 
          <item android:drawable="@drawable/bgnorm" /> 
      </selector>
    

    Now use like below:

    b1 = (Button) findViewById(R.id.b1);
    b1.setOnClickListener(new OnClickListener() {
    
        @Override
        public void onClick(View arg0) {
             b2.setBackgroundDrawable(getResources().getDrawable(R.drawable.whatever));
        }
    });
    
    b2 = (Button) findViewById(R.id.b2);
    b2.setOnClickListener(new OnClickListener() {
    
        @Override
        public void onClick(View arg0) {
             b1.setBackgroundDrawable(getResources().getDrawable(R.drawable.whatever));
        }
    });
    
    0 讨论(0)
  • 2020-12-16 23:14

    Easiest way

    just change color whatever you want

    button_design.xml

    <?xml version="1.0" encoding="utf-8"?>
    
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="@color/colorPurple"></solid>
            <corners android:radius="100dp" />
        </shape>
    </item>
    
    <item>
        <shape android:shape="rectangle">
            <gradient android:endColor="@color/colorPurple" android:startColor="@color/colorBlue" />
            <corners android:radius="100dp" />
        </shape>
    </item>
    
    0 讨论(0)
提交回复
热议问题