我正在尝试创建2行单选按钮,如下图所示。 但是当我直接把它放在上面时,我的无线电组就没有工作了 LinearLayout。
我是Android开发的新手。所以,如果有更好的选择。 欢迎他们
我的代码
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout2"
android:background="@android:color/holo_blue_dark">
<RadioButton
android:text="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radioButton33" />
<RadioButton
android:text="2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radioButton34" />
<RadioButton
android:text="3"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/radioButton35" />
<RadioButton
android:text="4"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/radioButton36" />
<RadioButton
android:text="5"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/radioButton37" />
<RadioButton
android:text="6"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/radioButton38" />
<RadioButton
android:text="7"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/radioButton39"
android:layout_marginRight="1.0dp" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout3"
android:background="@android:color/holo_blue_dark">
<RadioButton
android:text="8"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/radioButton40" />
<RadioButton
android:text="9"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/radioButton41" />
<RadioButton
android:text="10"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/radioButton42" />
<RadioButton
android:text="11"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/radioButton43" />
<RadioButton
android:text="12"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/radioButton44" />
<RadioButton
android:text="13"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/radioButton45" />
<RadioButton
android:text="14"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/radioButton46" />
</LinearLayout>
</RadioGroup>
由于
答案 0 :(得分:1)
您可以创建2个无线电组并处理RadioButtonCliked事件中的所有内容 像那个例子
public void RadioButtonClicked(View view) {
boolean checked = ((RadioButton) view).isChecked();
switch(view.getId()) {
case R.id.radioButton33: {
NameRadioGroup2.clearCheck();
NameRadioGroup1.check(view.getId());
break;
}
case R.id.radioButton40: {
NameRadioGroup1.clearCheck();
NameRadioGroup2.check(view.getId());
break;
}
{here implement cases for other radio buttons}
}
或
public void RadioButtonClicked(View view) {
boolean checked = ((RadioButton) view).isChecked();
if(ButtonFromRadioGroupOne(view.getId())
{
NameRadioGroup2.clearCheck();
NameRadioGroup1.check(view.getId());
}
else
{
NameRadioGroup1.clearCheck();
NameRadioGroup2.check(view.getId());
}
}
private bool ButtonFromRadioGroupOne(int id)
{
return id == R.id.radioButton33 || id == R.id.radioButton34 || id == R.id.radioButton35 || id == R.id.radioButton36 || id == R.id.radioButton37 || id == R.id.radioButton38 || id == R.id.radioButton39;
}
或者每个广播组可以有2个RadioButtonClicked事件。
public void RadioButtonClicked1(View view) {
RadioButtonClicked(NameRadioGroup1, NameRadioGroup2, view);
}
public void RadioButtonClicked2(View view) {
RadioButtonClicked(NameRadioGroup2, NameRadioGroup1, view);
}
public void RadioButtonClicked(RadioGroup selected, RadioGroup cleared, View view) {
boolean checked = ((RadioButton) view).isChecked();
cleared.clearCheck();
selected.check(view.getId());
}
答案 1 :(得分:0)
我修好了
首先,我创建了一个扩展方法,以便从视图中获取te子项
static class Extention
{
public static List<T> Childs<T>(this ViewGroup view) where T : View
{
List<T> childs = new List<T>();
for (int i = 0; i < view.ChildCount; i++)
{
var selectedView = view.GetChildAt(i) as T;
if (view != null)
{
childs.Add(selectedView);
}
}
return childs;
}
}
我在主要的
中添加了这段代码LinearLayout Layout2 = FindViewById<LinearLayout>(Resource.Id.linearLayout2);
LinearLayout Layout3 = FindViewById<LinearLayout>(Resource.Id.linearLayout3);
Buttons = Layout2.Childs<RadioButton>();
Buttons.AddRange(Layout3.Childs<RadioButton>());
foreach(RadioButton button in Buttons)
{
button.CheckedChange += RadioButton_Check;
}
这是我的活动
public bool InUse = false;
private void RadioButton_Check(object sender, CompoundButton.CheckedChangeEventArgs e)
{
if (InUse) return;
InUse = true;
RadioButton Senderbutton = sender as RadioButton;
foreach (RadioButton button in Buttons)
{
button.Checked = false;
}
Senderbutton.Checked = true;
InUse = false;
}