我正面临一个问题。
我有两个Button
对象。
ButtonA
ButtonB
要求: -
当我按ButtonA
时,应更改按钮的颜色,并且在我点击ButtonB
之前它应该保持不变。
点击ButtonB
同样的事情应该是ButtonA
if (v == btn)
{
btn.setBackground(mActivity.getResources().getDrawable(R.drawable.button_color_chnager));
}
XML:
<item android:state_focused="true" android:state_pressed="true"
android:drawable="@drawable/ic_launcher" />
答案 0 :(得分:16)
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>
现在使用如下:
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));
}
});
答案 1 :(得分:10)
试试这个:
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);
}
});
或
在drawables文件夹中创建selector.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/focused_pressed" />
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@drawable/pressed" />
<item android:drawable="@drawable/normal" />
</selector>
在布局中复制buttonA的代码
<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" />
答案 2 :(得分:4)
使用以下代码..
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;
}
}
});
希望它有所帮助...
答案 3 :(得分:3)
我没有在代码下面测试过。但我认为这对你有帮助。
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;
}
答案 4 :(得分:0)
尝试一下...
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" />
答案 5 :(得分:0)
最简单的方法
随心所欲改变颜色
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>