两个radiobutton距离比较远,中间还隔了很多空间,用radiogroup是不行的,所以就想用代码实现两个里面只能选一个,选了A,B前面的点就消失,选了B,A前面的点就消失,用代码怎样实现呢?我写了下面的代码,但是不行。
// 点击TCP
rdbTCP.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
             if (rdbTCP.isSelected() == true) 
             {
              rdbTCP.setSelected(false);
              rdbUDP.setSelected(true);
             }
             if (rdbTCP.isSelected() == false) 
             {
              rdbTCP.setSelected(true);
              rdbUDP.setSelected(false);
             }
            }  
});

// 点击UDP
rdbUDP.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
             if (rdbUDP.isSelected() == true) 
             {
              rdbTCP.setSelected(true);
              rdbUDP.setSelected(false);
             }
             if (rdbTCP.isSelected() == false) 
             {
              rdbTCP.setSelected(false);
              rdbUDP.setSelected(true);
             }
            }  
});

解决方案 »

  1.   


    // 点击TCP
    rdbTCP.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if (rdbTCP.isSelected() == false) 
                 {
                  rdbTCP.setSelected(true);
                  rdbUDP.setSelected(false);
                 }
                }  
    });// 点击UDP
    rdbUDP.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                 if (rdbUDP.isSelected() == false) 
                 {
                  rdbTCP.setSelected(false);
                  rdbUDP.setSelected(true);
                 }
                }  
    });
      

  2.   

    既然只有两个,为什么不写成两个Imagview+TextView 呢? 当点击这个的时候给另外一个改变图片就好了。
    我们是做程序的,没必要让客户的感觉带动程序,应该是用程序给客户感觉。   不是单选,但是给客户单选的感觉就好了。
      

  3.   

    用check方法
    final RadioButton radioMale = (RadioButton)findViewById(R.id.radioMale);
    final RadioButton radioFeMale = (RadioButton)findViewById(R.id.radioFemale);
    radioMale.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
    if(((RadioButton)v).isChecked()){
    radioFeMale.setChecked(false);
    }
    }
    });
    radioFeMale.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
    if(((RadioButton)v).isChecked()){
    radioMale.setChecked(false);
    }
    }
    });
      

  4.   

    mButton1 = (RadioButton)findViewById(R.id.radioButton1);
    mButton2 = (RadioButton)findViewById(R.id.radioButton2);

    mButton1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
    if(arg1){
    Toast.makeText(getApplicationContext(),"1 first click 1",0).show();
    mButton2.setChecked(false);
    }
    }
    });
    mButton2.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
    if(arg1){
    Toast.makeText(getApplicationContext(),"2 first click 1",0).show();
    mButton1.setChecked(false);
    }
    }
      

  5.   

    确实有用,谢谢。
    应该用setChecked,我以前用的setSelected