我有一个ConstraintLayout作为根布局,没关系
但是我现在有一个RadioGroup,我必须在其中制作两列RadioButtons。
由于ConstraintLayout是关于摆脱嵌套布局,我认为将那些RadioButton放入RadioGroup并将它们放置得恰当。
原来将ConstraintLayout作为根布局,包含RadioGroup,似乎没有任何改变。
但也许我错了。
你们如何在一个RadioGroup中获得两行RadioButton,这是在ConstraintLayout中?
干杯
答案 0 :(得分:2)
View
必须使用其直接父级的布局属性。例如,您不能RadioButton
个layout_constraint
,因为直接父级是RadioGroup
而RadioGroup
不知道如何解释这些属性。
RadioGroup
扩展了LinearLayout
,因此使用单个RadioGroup
可以做到的最好的是RadioButton
的单行或一列。您可以在布局中使用两个RadioGroup
,并在Java代码中监听两者的更改。
private RadioGroup mGroup1; // init in onCreate
private RadioGroup mGroup2; // init in onCreate
private OnCheckedChangedListener mCheckListener = new OnCheckedChangedListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// To make it appear as if the two groups are one large group,
// checking something in either should clear the check in the other.
RadioGroup otherGroup = group == mGroup1 ? mGroup2 : mGroup1;
otherGroup.clearCheck();
// do something with checkedId
}
}
答案 1 :(得分:0)
我想出了一个简单的课程,让它变得非常简单。它只在一个java文件中。它是一个不受约束的"广播组。您可以根据需要布置单选按钮,将按钮添加到组中,它就像一个radioGroup。
代码位于此要点UnboundRadioGroup,并附有完整说明,但以下是其用法:
如果您不想使用匿名内部类,则可以使用implements
public class MainActivity extends AppCompatActivity implements UnboundRadioGroup.OnClickListener
有几种方法可以创建一个组。
查找根Viewgroup
ViewGroup viewGroup = (ViewGroup) findViewById(android.R.id.content);
// create a radio group with the root viewgroup
UnboundRadioGroup unboundRadioGroup1 = new UnboundRadioGroup(this, viewGroup);
// don't forget to set a click listener for the group. Using implements in this case
unboundRadioGroup1.setOnClickListener(this);
或创建一个具有根视图组ID的广播组,无论您喜欢哪个。
UnboundRadioGroup unboundRadioGroup2 = new UnboundRadioGroup(this, android.R.id.content);
// add your click listener using an inner class
unboundRadioGroup2.setOnClickListener(new UnboundRadioGroup.OnClickListener()
{
@Override
public void OnClick(RadioButton radioButton)
{
Log.i("radioButton", radioButton.getTag().toString());
}
});
此方法会手动将按钮添加到您的论坛
unboundRadioGroup1.add((RadioButton) findViewById(R.id.radioButton1));
unboundRadioGroup1.add((RadioButton) findViewById(R.id.radioButton2));
并且此方法根据XML中的android:tag属性自动向您的组添加按钮。请注意,如果您需要代码中的其他位置的标记,则不应使用此方法。但是,如果您不需要标记,可以将多个单选按钮的标记设置为相同的名称,然后此方法将从中创建一个组
unboundRadioGroup2.createGroupByTag("tag");
如果您使用的是工具而不是内部类,那么您的Onclick将设置如下:
@Override
public void OnClick(RadioButton radioButton)
{
Log.i("radioButton", radioButton.getTag().toString());
}
答案 2 :(得分:0)
请访问https://github.com/samlu/ConstraintRadioGroup 可与ConstraintLayout一起使用的RadioGroup小部件
blRadioGroup
小部件应该是您想要的。
答案 3 :(得分:0)
自定义RadioGroup
扩展了ConstraintLayout
is available at Github
您可以导入库并使用小部件ConstraintRadioGroup