我有一个ConstraintLayout为根布局和它的罚款。
但是我现在有一个RadioGroup中,我不得不作出在它的单选按钮的两列。 由于ConstraintLayout即将获得摆脱嵌套式布局的,我认为这将是罚款将在RadioGroup中的单选按钮,并适当地放置它们。
原来有ConstraintLayout为根布局,包含了RadioGroup中,似乎并没有改变任何东西。
但是,也许我错了。
你们将如何获得具有RadioGroup中,这是一个ConstraintLayout内内单选按钮的两行?
干杯
View
■找用自己的直接父的布局属性。 你不能,例如,有RadioButton
s的layout_constraint
S,因为直接父是一个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
}
}
我想出了一个简单的类,使得它很容易。 这一切都在一个单一的Java文件。 这是一个“绑定”单选按钮组。 你可以布置你的单选按钮,只要你喜欢,按钮添加到组,它的作用就像一个radioGroup中。
该代码是在这个要点UnboundRadioGroup ,一个完整的解释,但这里是它的用法:
如果你不想使用匿名内部类,你可以使用工具
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);
或创建一个单选按钮组与根的ViewGroup的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));
这种方法会自动添加按钮,基于Android的组:在XML标记属性。 请注意,如果您需要在其他地方的标签在你的代码你不应该使用这种方法。 但是,如果你不打算给需要的标签,你可以设置多个单选按钮的标签相同的名称,则此方法会从他们创建一个组
unboundRadioGroup2.createGroupByTag("tag");
如果您使用工具,而不是内部类的,你的onClick将设置如下:
@Override
public void OnClick(RadioButton radioButton)
{
Log.i("radioButton", radioButton.getTag().toString());
}
请访问https://github.com/samlu/ConstraintRadioGroup可以与ConstraintLayout一起使用的部件RadioGroup中
该blRadioGroup
部件应该是你在找什么。