我试图让一个按钮度过一个用户选择后点击它。我的程序是一个10个问题的测验,如果用户选择一个选项然后返回该问题,则应按选择显示该问题。
在问题之间切换时,我似乎找不到一种将按钮显示为单击状态的方法。
mAButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i(TAG, "A Button Clicked");
answers[questionIndex] = "Question: " + questionIndex + ", Answer: A";
Toast t;
t = Toast.makeText(MainActivity.this, R.string.recorded_toast, Toast.LENGTH_SHORT);
t.show();
}
});
这是我对某个答案的onClick的示例(我有5个按钮用于答案)。我想要这样,如果用户选择了此答案,则该按钮将保持单击状态,直到他们选择了其他答案。我已经尝试了一些我在网上看到的东西,但是到目前为止,一切都还不顺利。
编辑:每个问题都是带有5个答案的多项选择!
答案 0 :(得分:2)
如果一个答案,允许答案列表中进行检查,则需要使用RadioButtons
如果多个答案被允许进行检查时,需要使用CheckBoxes或ToggleButtons
下面是使用的ToggleButtons的一个片段,其模拟按钮点击的
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/select"
android:textOff="Unselected"
android:textOn="Selected" />
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/select"
android:textOff="Unselected"
android:textOn="Selected" />
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/select"
android:textOff="Unselected"
android:textOn="Selected" />
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/select"
android:textOff="Unselected"
android:textOn="Selected" />
</LinearLayout>
和产生用于背景选择的可绘制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/checked_button" android:state_checked="true" />
<item android:drawable="@color/unchecked_button" android:state_checked="false" />
</selector>
颜色
<resources>
<?xml version="1.0" encoding="utf-8"?>
...
<color name="checked_button">#989898</color>
<color name="unchecked_button">#f8f8f8</color>
</resources>
Java:
ToggleButton button1 = findViewById(R.id.btn1);
ToggleButton button2 = findViewById(R.id.btn2);
ToggleButton button3 = findViewById(R.id.btn3);
ToggleButton button4 = findViewById(R.id.btn4);
button1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// Button1 is checked
} else {
// Button1 is unchecked
}
}
});
答案 1 :(得分:1)
听起来像您应该在RadioButton内使用RadioGroup。
有关更多信息,请参见the guide in the documentation。
如果这不能帮助您解决问题,请clarify your question。
答案 2 :(得分:0)
使用RadioGroup。并用ToggleButton(看起来最接近常规按钮)填充它。 Another answer which shows how to set this up然后,您可以使用“ radioGroup.getCheckedRadioButtonId();”检索左键单击的ToggleButton的ID。 How to get checked option