1

У меня есть ConstraintLayout как корневой макет, и все в порядке.
Однако у меня теперь есть RadioGroup, где я должен сделать в нем два столбца RadioButtons. Поскольку ConstraintLayout о том, чтобы избавиться от вложенных макетов, я подумал, что было бы неплохо разместить эти RadioButtons в RadioGroup и разместить их соответствующим образом.
Оказывается, наличие ConstraintLayout в качестве корневого макета, содержащего RadioGroup, похоже, ничего не меняет.
Но, может быть, я ошибаюсь.ConstraintLayout, RadioGroup и два столбца RadioButton

Как вы, ребята, достигнете двух рядов RadioButtons внутри RadioGroup, находящегося внутри ConstraintLayout?

Приветствия

ответ

2

View ы должны использовать макет атрибуты своего прямого родителя. Вы не можете, например, иметь RadioButton s с layout_constraint s, потому что прямой родитель является RadioGroup, а RadioGroup не знает, как интерпретировать эти атрибуты.

RadioGroup расширяет LinearLayout, поэтому лучшее, что вы можете сделать с одним RadioGroup является одной строки или столбца RadioButton с. У вас может быть два RadioGroup s в вашем макете, и в вашем 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 
    } 
} 
+0

где эта группа1 происходит от: 'RadioGroup otherGroup = group == group1? mGroup2: mGroup1; '? –

+0

@ AndyStrife это была опечатка. исправлено. – Karakuri

Смежные вопросы