今天在写东西的时候需要自定义checkbox并且需要通过勾选checkbox为true,下面的button按钮才能进行点击事件等操作,在没有勾选的时候,button会是灰色且不可以操作。
首先我们需要在dw文件下新建一个 xml并且创建<selector的标签>,代码如下
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
//这是代表checkbox被勾选的时候为true的时候checkbox的背景图片就为id为yes的这张
<item android:state_checked="true" android:drawable="@drawable/yes" />
<item android:state_selected="true" android:drawable="@drawable/yes"></item>
<item android:state_pressed="true" android:drawable="@drawable/yes"></item>
<item android:state_checked="false" android:drawable="@drawable/no" />
</selector>
这时候我们该怎么样子去引用我们自定义的东东呢,我们只需要在布局里面 android:background="@drawable/definecheckbox" 就好了
<item android:state_checked="true" android:drawable="@drawable/yes" />
<item android:state_selected="true" android:drawable="@drawable/yes"></item>
<item android:state_pressed="true" android:drawable="@drawable/yes"></item>
<item android:state_checked="false" android:drawable="@drawable/no" />
</selector>
这时候我们该怎么样子去引用我们自定义的东东呢,我们只需要在布局里面 android:background="@drawable/definecheckbox" 就好了
<CheckBox
android:id="@+id/choose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/definecheckbox"
android:button="@null"
/>
我们开始写逻辑代码,思路为先获得checkbox的引用 然后写它的点击事件,我们要让她跟button进行一个联动的话就要在checkbox的setoncheckchanged的点击事件中来写button的点击事件。代码如下:
package com.example.checkbox;
import android.support.v7.app.ActionBarActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Toast;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
private CheckBox choose;
private Button send;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
// send.setClickable(false);
}
public void init()
{
choose=(CheckBox) findViewById(R.id.choose);
send=(Button) findViewById(R.id.send);
choose.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked) {
//设置checkbox被勾选才能对button进行操作
send.setClickable(isChecked);
//被勾选是按钮颜色进行一个变化
send.setBackgroundColor(Color.parseColor("#00ff00"));
send.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "出大事了",1000).show();
}
});
}
else {
///假如没有被勾选的话,按钮的颜色跟被勾选的时候不一样
send.setBackgroundColor(Color.parseColor("#0000ff"));
//并且把button设置为不可被点击
send.setClickable(false);
}
}
});
}
private Button send;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
// send.setClickable(false);
}
public void init()
{
choose=(CheckBox) findViewById(R.id.choose);
send=(Button) findViewById(R.id.send);
choose.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked) {
//设置checkbox被勾选才能对button进行操作
send.setClickable(isChecked);
//被勾选是按钮颜色进行一个变化
send.setBackgroundColor(Color.parseColor("#00ff00"));
send.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "出大事了",1000).show();
}
});
}
else {
///假如没有被勾选的话,按钮的颜色跟被勾选的时候不一样
send.setBackgroundColor(Color.parseColor("#0000ff"));
//并且把button设置为不可被点击
send.setClickable(false);
}
}
});
}
}
大概的操作思路就是这样的了
demo下载地址 http://download.youkuaiyun.com/detail/ningzhouxu/9532433