我正在使用3个切换按钮。在我的Android应用程序中,我希望只有1个这些切换按钮可以选择一次。我该怎么做呢?
hm2xizp91#
一个简单的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); } } } };
}
ql3eal8s2#
Pikeman的解决方案是可以的,但是根据你有多少按钮,你可能需要考虑一个可以迭代的数组。对于少量的按钮,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); } } }
jgwigjjp3#
你可以使用radio buttons,如果你不想这样,看看这个链接--它告诉你如何监听按钮状态的变化,如果你发现其中一个按钮被改变了,把另外两个按钮改为关闭状态。
zpf6vheq4#
我使用以下函数;
private void setIsChecked(CheckBox checkBox){ buttonOne.setChecked(false); buttonTwo.setChecked(false); buttonThree.setChecked(false); checkBox.setChecked(true) }
现在除了你选择的那一个以外所有的都被认为是出口
setIsChecked(buttonOne);
现在仅勾选按钮1,等等。
t8e9dugd5#
如果你使用MaterialButtonToggleGroup,你只需要在你的xml中使用这个属性:
<com.google.android.material.button.MaterialButtonToggleGroup ... app:singleSelection="true" ...>
5条答案
按热度按时间hm2xizp91#
一个简单的onChangeListener将执行以下操作:
}
ql3eal8s2#
Pikeman的解决方案是可以的,但是根据你有多少按钮,你可能需要考虑一个可以迭代的数组。
对于少量的按钮,Pikeman的代码可以简化以保存一些输入...
jgwigjjp3#
你可以使用radio buttons,如果你不想这样,看看这个链接--它告诉你如何监听按钮状态的变化,如果你发现其中一个按钮被改变了,把另外两个按钮改为关闭状态。
zpf6vheq4#
我使用以下函数;
现在除了你选择的那一个以外所有的都被认为是
出口
现在仅勾选按钮1,等等。
t8e9dugd5#
如果你使用MaterialButtonToggleGroup,你只需要在你的xml中使用这个属性: