转自:传送门
上图
实现思路:给点击的按钮设置setEnabled为false,其他的为true,即可实现变色
下面三个XML文件都在drawable目录下
下面三个XML文件都在drawable目录下
下面三个XML文件都在drawable目录下
nopress.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--填充色-->
<solid android:color="@color/colorAccent"/>
<!--圆角-->
<corners android:radius="5dp"/>
<!--边框线-->
<stroke android:color="#000" android:width="1dp"/>
</shape>
onpress.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--填充色-->
<solid android:color="@color/colorPrimary"/>
<!--圆角-->
<corners android:radius="5dp"/>
<!--边框线-->
<stroke android:color="#000" android:width="1dp"/>
</shape>
btn_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:drawable="@drawable/onpress"/>
<item android:state_enabled="false" android:drawable="@drawable/nopress"/>
</selector>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn_selector"/>
<Button
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn_selector"/>
<Button
android:id="@+id/btn3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn_selector"/>
<Button
android:id="@+id/btn4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn_selector"/>
<Button
android:id="@+id/btn5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn_selector"/>
<Button
android:id="@+id/btn6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/btn_selector"/>
</LinearLayout>
MainActivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button mBtn1;
private Button mBtn2;
private Button mBtn3;
private Button mBtn4;
private Button mBtn5;
private Button mBtn6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtn1 = findViewById(R.id.btn1);
mBtn2 = findViewById(R.id.btn2);
mBtn3 = findViewById(R.id.btn3);
mBtn4 = findViewById(R.id.btn4);
mBtn5 = findViewById(R.id.btn5);
mBtn6 = findViewById(R.id.btn6);
mBtn1.setOnClickListener(this);
mBtn2.setOnClickListener(this);
mBtn3.setOnClickListener(this);
mBtn4.setOnClickListener(this);
mBtn5.setOnClickListener(this);
mBtn6.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn1:
setEnable(mBtn1);
break;
case R.id.btn2:
setEnable(mBtn2);
break;
case R.id.btn3:
setEnable(mBtn3);
break;
case R.id.btn4:
setEnable(mBtn4);
break;
case R.id.btn5:
setEnable(mBtn5);
break;
case R.id.btn6:
setEnable(mBtn6);
break;
}
}
private void setEnable(Button btn) {
List<Button> buttonList=new ArrayList<>();
if (buttonList.size()==0){
buttonList.add(mBtn1);
buttonList.add(mBtn2);
buttonList.add(mBtn3);
buttonList.add(mBtn4);
buttonList.add(mBtn5);
buttonList.add(mBtn6);
}
for (int i = 0; i <buttonList.size() ; i++) {
buttonList.get(i).setEnabled(true);
}
btn.setEnabled(false);
}
}