多个按钮形成一个按钮组,但是不像单选按钮组那样方便,需要自己写。
例子:5个按钮,按下的那个变成蓝色,其余的4个按钮不变色。
代码如下:
1、定义选择器
/ButtonGroup/res/drawable/btngroup_selector.xml
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/color_blue" />
<item android:state_selected="true" android:drawable="@color/color_blue" />
</selector>
2、写按钮布局
/ButtonGroup/res/layout/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"
tools:context=".MainActivity" >
<Button
android:id="@+id/one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btngroup_selector"
android:text="@string/one" />
<Button
android:id="@+id/two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btngroup_selector"
android:layout_below="@+id/one"
android:text="@string/two" />
<Button
android:id="@+id/three"
android:layout_below="@+id/two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btngroup_selector"
android:text="@string/three" />
<Button
android:id="@+id/four"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btngroup_selector"
android:layout_below="@+id/three"
android:text="@string/four" />
<Button
android:id="@+id/five"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btngroup_selector"
android:layout_below="@+id/four"
android:text="@string/five" />
</RelativeLayout>
3、状态处理
/ButtonGroup/src/com/example/buttongroup/MainActivity.java
package com.example.buttongroup;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener{
private Button one,two,three,four,five;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one = (Button) findViewById(R.id.one);
two = (Button) findViewById(R.id.two);
three = (Button) findViewById(R.id.three);
four = (Button) findViewById(R.id.four);
five = (Button) findViewById(R.id.five);
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
four.setOnClickListener(this);
five.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.one:
one.setSelected(true);
two.setSelected(false);
three.setSelected(false);
four.setSelected(false);
five.setSelected(false);
break;
case R.id.two:
one.setSelected(false);
two.setSelected(true);
three.setSelected(false);
four.setSelected(false);
five.setSelected(false);
break;
case R.id.three:
one.setSelected(false);
two.setSelected(false);
three.setSelected(true);
four.setSelected(false);
five.setSelected(false);
break;
case R.id.four:
one.setSelected(false);
two.setSelected(false);
three.setSelected(false);
four.setSelected(true);
five.setSelected(false);
break;
case R.id.five:
one.setSelected(false);
two.setSelected(false);
three.setSelected(false);
four.setSelected(false);
five.setSelected(true);
break;
default:
break;
}
}
}