【问题标题】:how to allow only 1 android toggle button out of 3 to be on at once如何一次只允许 3 个中的 1 个 android 切换按钮打开
【发布时间】:2011-09-11 01:56:28
【问题描述】:

我正在使用 3 个切换按钮。在我的 android 应用程序中,我希望一次只能选择其中一个切换按钮。我该怎么做呢?

【问题讨论】:

标签: java android togglebutton


【解决方案1】:

我使用如下函数;

private void setIsChecked(CheckBox checkBox){
      buttonOne.setChecked(false);
      buttonTwo.setChecked(false);
      buttonThree.setChecked(false);
      checkBox.setChecked(true)
}

现在除了你选择的之外,所有这些都被视为

setIsChecked(buttonOne);

现在只有一个按钮被选中等等。

【讨论】:

    【解决方案2】:

    一个简单的 onChangeListener 就可以了:

    public class TestProjectActivity extends Activity {
    
    ToggleButton one; 
    ToggleButton two;
    ToggleButton three;
    ToggleButton four;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
    
        one = (ToggleButton) findViewById(R.id.toggleButton1);
        two = (ToggleButton) findViewById(R.id.toggleButton2);
        three = (ToggleButton) findViewById(R.id.toggleButton3);
        four = (ToggleButton) findViewById(R.id.toggleButton4);
    
        one.setOnCheckedChangeListener(changeChecker);
        two.setOnCheckedChangeListener(changeChecker);
        three.setOnCheckedChangeListener(changeChecker);
        four.setOnCheckedChangeListener(changeChecker);
    }
    
    OnCheckedChangeListener changeChecker = new OnCheckedChangeListener() {
    
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked){
                if (buttonView == one) {
                    two.setChecked(false);
                    three.setChecked(false);
                    four.setChecked(false);
                }
                if (buttonView == two) {
                    one.setChecked(false);
                    three.setChecked(false);
                    four.setChecked(false);
                }
                if (buttonView == three) {
                    two.setChecked(false);
                    one.setChecked(false);
                    four.setChecked(false);
                }
                if (buttonView == four) {
                    two.setChecked(false);
                    three.setChecked(false);
                    one.setChecked(false);
                }
            }
        }
    };
    

    }

    【讨论】:

    • 为什么是 CompoundButton 与 RadioGroup?
    【解决方案3】:

    ThePikeman 的解决方案还可以,但根据您有多少按钮,您可能需要考虑一个可以迭代的数组。

    对于少量的按钮,Pikeman 的代码可以简化以节省一些打字...

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked){
          if (buttonView != one) {
            one.setChecked(false);
          }
          if (buttonView != two) {
            two.setChecked(false);
          }
          if (buttonView != three) {
            three.setChecked(false);
          }
          if (buttonView != four) {
            four.setChecked(false);
          }
        }
      }
    

    【讨论】:

      【解决方案4】:

      您可以使用radio buttons。如果您不想这样做,请查看this link - 它向您展示了如何监听按钮状态的变化。如果您发现您的一个按钮发生了变化,请将另外两个更改为关闭状态。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-11
        • 1970-01-01
        • 2021-03-04
        • 1970-01-01
        • 1970-01-01
        • 2021-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多