我想添加一个包含整数值的切换按钮。如果选中切换按钮,则该值为1,反之亦然。如何从切换按钮获取此值?
欢迎使用示例代码。谢谢您的宝贵时间。
答案 0 :(得分:1)
final int answer = 0;
JToggleButton jtb = new JToggleButton("Press Me");
jtb.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent ev) {
if(ev.getStateChange()==ItemEvent.SELECTED){
answer = 1;
} else if(ev.getStateChange()==ItemEvent.DESELECTED){
answer = 0;
}
}
});
答案 1 :(得分:0)
可以通过使自定义窗口小部件继承Button类来创建切换按钮。
class SelectableButton(context: Context, attrs: AttributeSet) : Button(context, attrs) {
var isViewSelected: Boolean = false
init {
setTextColor(ContextCompat.getColor(context, android.R.color.black))
background = ContextCompat.getDrawable(context, R.drawable.yellow_selector)
}
fun getSelectedInt() = if(isViewSelected) 1 else 0
override fun performClick(): Boolean {
isViewSelected = !isViewSelected
background = if (isViewSelected) {
setTextColor(ContextCompat.getColor(context, android.R.color.black))
ContextCompat.getDrawable(context, R.drawable.yellow_selector)
} else {
setTextColor(ContextCompat.getColor(context, android.R.color.black))
ContextCompat.getDrawable(context, R.drawable.grey_rounded_corner)
}
return super.performClick()
}
在上面的代码中,文本和背景的颜色和背景也被切换为选定状态。如果不需要,可以删除。
用法示例
// In layout file
<com.your.package.SelectableButton
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button text"
android:textAllCaps="true" />
// In code
// toggle in programming is not necessary
// get selected value
val intValue = button.getSelectedInt()