Я хочу отобразить 6 переключателей той же группы радио. Но все 6 переключателей остаются на одной линии и уходят с экрана. Как отображать их в две строки (по три переключателя)? Я пробовал все возможное для меня (я новичок в android).радиокнопка несколько строк
ответ
От поиска, похоже, нет способа сделать это, так как RadioGroup использует LinearLayout, который не обертывается. Поскольку радиокнопки должны быть прямыми дочерними элементами в группе радиостанций, вы не можете добавлять вспомогательные макеты в группу радиостанций.
Это означает, что вам придется реализовать это поведение макета вручную. Возможны два варианта:
- Создайте копию RadioGroup, чтобы расширить разный макет или, по крайней мере, позволить вам управлять им динамически.
- Внесите свой собственный макет для замены
RadioGroup
, который расширяет макет по вашему выбору и реализуетOnClickListener
. Есть хороший пример here.
Спасибо BD за подтверждение того, что я на самом деле заключил, но где-то в моем сознании у меня была надежда, что должно быть что-то, что мне не хватает. Благодаря @silent –
Простой ответ заключался бы в том, чтобы обернуть вашу RadioGroup в ScrollView, чтобы пользователь мог прокручивать экранные кнопки (не очень изящные, но не интенсивные для кода).
Для первой версии я собираюсь использовать этот простой шаг. Позже я создам настраиваемый радиоуправление. Thanks –
Нет проблем. Рад был помочь. – Barak
Динамически сгенерирован marginTop и marginLeft, чтобы настроить необходимость находиться в одной и той же линии радиообмена. Во-первых, получить ширину экрана, установите layoutparams MarginLeft для ширины экрана вдвое, высота MarginTop должна быть скорректирована в зависимости от конкретного radiobutton.eg:
holder.question = (TextView) convertView.findViewById(R.id.topic_item_question);
holder.option = (RadioGroup) convertView.findViewById(R.id.topic_item_option);
holder.option1 = (RadioButton) convertView.findViewById(R.id.topic_item_option1);
holder.option2 = (RadioButton) convertView.findViewById(R.id.topic_item_option2);
//为了能够在一行显示两个radiobutton:获取屏幕的宽度
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();//左侧设置的间距
int height = DensityDpToPx.dpToPx(context, 24);//处于第二个的高度间距
LinearLayout.LayoutParams params = (LayoutParams) holder.option2.getLayoutParams();
params.setMargins(width/2, -height, 0, 0);
holder.option2.setLayoutParams(params);
holder.option3 = (RadioButton) convertView.findViewById(R.id.topic_item_option3);
holder.option4 = (RadioButton) convertView.findViewById(R.id.topic_item_option4);
LinearLayout.LayoutParams paramsTwo = (LayoutParams) holder.option4.getLayoutParams();
paramsTwo.setMargins(width/2, -height, 0, 0);
holder.option4.setLayoutParams(paramsTwo);
'Я пробовал все возможное для меня 'что ты пробовал? пожалуйста, объясни. – ariefbayu
@silent Я положил переключатели в относительном макете, чтобы попробовать leftOf/rightOf, но кнопки исчезли. Поскольку макеты не допускаются внутри тега радиогруппы. И если бы я разделил радиообъекты в двух разных радиогруппах, они не были бы в одной радиогруппе. Пробовал обернуть контент, но он не сработал. –