ConstraintLayout,RadioGroup中和单选按钮的两列(ConstraintLay

2019-09-28 01:05发布

我有一个ConstraintLayout为根布局和它的罚款。
但是我现在有一个RadioGroup中,我不得不作出在它的单选按钮的两列。 由于ConstraintLayout即将获得摆脱嵌套式布局的,我认为这将是罚款将在RadioGroup中的单选按钮,并适当地放置它们。
原来有ConstraintLayout为根布局,包含了RadioGroup中,似乎并没有改变任何东西。
但是,也许我错了。

你们将如何获得具有RadioGroup中,这是一个ConstraintLayout内内单选按钮的两行?

干杯

Answer 1:

View ■找用自己的直接父的布局属性。 你不能,例如,有RadioButton s的layout_constraint S,因为直接父是一个RadioGroupRadioGroup不知道如何解释这些属性。

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
    }
}


Answer 2:

我想出了一个简单的类,使得它很容易。 这一切都在一个单一的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());
    }


Answer 3:

请访问https://github.com/samlu/ConstraintRadioGroup可以与ConstraintLayout一起使用的部件RadioGroup中

blRadioGroup部件应该是你在找什么。



文章来源: ConstraintLayout, RadioGroup and two columns of RadioButton