自定义CheckBox,用自己的方式来实现个性勾选。checkbox与button的联动。

来源:互联网 发布:mysql 清空数据库表 编辑:程序博客网 时间:2024/05/22 04:58

今天在写东西的时候需要自定义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" >
//这是代表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" 就好了

    <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;


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);
     
    }
   }
  });
     
     
    }


   
}
大概的操作思路就是这样的了



demo下载地址 http://download.csdn.net/detail/ningzhouxu/9532433

0 0